我在Python中有一个熊猫数据框,看起来像
AccountID_x AccountId AmountCD_x AmountDOC_x AmountDoc_x
1 NaN 4001001copa 52.53 52.53 NaN
2 NaN 4001001copa 52.53 52.53 NaN
3 4001001copa NaN 52.53 52.53 NaN
4 NaN 4001001copa 52.53 52.53 NaN
此数据帧是将两个数据帧合并在一起的合并命令的结果。我现在想做的是创建一个新列,该列将添加AccountID_x或AccountId而不是Nan,因此在上面的示例中,第1、2、4行将具有AccountId的值,而第3行将具有某些新列中AccountID_x中的值。
答案 0 :(得分:2)
您可以使用Combine_first将两者结合起来
df['new_col'] = df['AccountId'].combine_first(df['AccountID_x'])
df['new_col']
1 4001001copa
2 4001001copa
3 4001001copa
4 4001001copa
答案 1 :(得分:1)
您还可以使用fillna
传播apply
:
df2['newcolumn'] = df2[['AccountID_x','AccountId']].apply(lambda x: x.fillna(method='ffill')[-1], axis=1)
或等效地(在您的情况下):
df2['newcolumn'] = df2[['AccountID_x','AccountId']].apply(lambda x: x.fillna(method='bfill')[0], axis=1)
答案 2 :(得分:0)
尝试一下:
df['new_column'] = df.apply(lambda x: x['AccountId'] if pd.isnull(x['AccountID_x']) else x['AccountID_x'], axis=1)