通过将两个稀疏列连接在一起,在Pandas Dataframe中创建新的密集列

时间:2017-02-02 20:42:21

标签: python pandas while-loop

我有一个包含三列的数据框,'组织名称''类型' ,'组织的类型'。 '类型'和'组织的类型'是一回事。我想创建一个名为' Org Type'在字段中输入字符串' Type'列,如果' Type'列为空白,在' Type of Org'中取名。柱。

Example of current dataframe:
Name of Organization     Type      Type of Org     
Tyco                     Retail    Retail          
Mac                      Service
Lis                                Comm
Ice                      Tech
Rex                      Retail    Retail


Example of New dataframe: 
Name of Organization     Type      Type of Org    Org Type
Tyco                     Retail    Retail         Retail
Mac                      Service                  Service
Lis                                Comm           Comm
Ice                      Tech                     Tech
Rex                      Retail    Retail         Retail

基本上我正在努力将“' Type'列和组织的类型'列,以便创建一个完整的列,因为两列都缺少一些数据,但它们所拥有的数据将是相同的。如果有更好的方法来做这些,我会喜欢任何建议 - 只是不确定解决这个问题的最佳方法是什么?一会儿循环?

2 个答案:

答案 0 :(得分:3)

此功能称为combine_first

df.Type.combine_first(df['Type of Org'])
Out[332]: 
0     Retail
1    Service
2       Comm
3       Tech
4     Retail
Name: Type, dtype: object

答案 1 :(得分:1)

执行此操作的一种方法是在对缺少的行进行子集化之前将Org Type列设置为Type列。如果Type列包含缺失值(不仅仅是空字符串),则以下操作应该可以解决问题。如果它包含空字符串或类似字符串,则可以对Type列等于这些值的位置进行分组。

df['Org Type'] = df['Type']
df.loc[df['Org Type'].isnull(), 'Org Type'] = \
    df.loc[df['Org Type'].isnull(), 'Type of Org']