我想做的是做一个简单的声明,说明如果列不是 = '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
我是一名优秀的程序员,十分优秀!