我正在使用Python v3.6.7和pandas v.0.24.2。我有一个带有两列(df
和A
)的数据框(B
-multiindex)。我想使用列C
或A
中的值创建第三列(B
),具体取决于该行的B
是否为空。
DF
如下所示:
idx1-idx2 A B
a-a 23 10
a-b 5 NaN
a-c 6 NaN
a-d 35 10
现在,我想用C
或A
中的值创建列B
,这取决于B是否为空。伪代码为:
for each row in df:
if row in column B is empty:
fill row of column C with value from row column A
else:
fill row of column C with value from row column B
结果如下:
idx1-idx2 A B C
a-a 23 10 10
a-b 5 NaN 5
a-c 6 NaN 6
a-d 35 10 10
我当时正在玩if df["B"].isnull():
和df.loc[df["B"].isnull()]
,但走得并不远,主要是因为出现了Truth value of a Series is ambiguous. Use a.empty...
之类的错误
有什么想法吗?
谢谢!
---编辑---
@ cs95建议使用NaN
用系列填充pd.fillna(pd.Series)
在这种情况下效果很好,但是如果没有NaN
,您将如何处理此问题?例如:
idx1-idx2 A B
a-a 23 10
a-b 5 67
a-c 6 15
a-d 35 10
您将如何在每一列中选择最大的数字来获得:
idx1-idx2 A B C
a-a 23 10 10
a-b 5 67 67
a-c 6 15 15
a-d 35 10 10
谢谢!