Skip to main content
 首页 » 编程设计

python之数据框中两列或多列之间的 If 语句

2025年05月04日22mq0036

我想做的是做一个简单的声明,说明如果列不是 = 'nan',然后在数据框中创建一个新列并为每一行设置该值。

ID1    ID2 
Apple  nan 
Orange nan 
nan    Pear 
nan    Grape 

理想情况下它看起来像这样:

ID1    ID2    MasterID 
Apple  nan    Apple 
Orange nan    Orange 
nan    Pear   Pear 
nan    Grape  Grape 

我试过使用以下方法:

df['MasterID'] = '' 
df.loc[df['ID1'] != 'nan','MasterID'] = df['ID1'] 
df.loc[df['ID2'] != 'nan','MasterID'] = df['ID2'] 

但它所做的只是优先处理最后一条语句以撤消第二行创建的内容。当我像这样使用 numpy where 语句时也是如此:

df['MasterID'] = np.where(df['ID1'] != 'nan', 
                          df['ID1'], 
                          df['ID2']) 

我还想使用一些我将来可能用 3+ 列完成此操作的东西。感谢任何指导。

请您参考如下方法:

首先替换NaN,然后每行sum:

df['MasterID'] = df.fillna('').sum(axis=1) 

如果需要指定列名:

df['MasterID'] = df[['ID1','ID2']].fillna('').sum(axis=1) 
 
print (df) 
      ID1    ID2 MasterID 
0   Apple    NaN    Apple 
1  Orange    NaN   Orange 
2     NaN   Pear     Pear 
3     NaN  Grape    Grape