比较Python中数据框的两列并基于值,将值之一写入第三列

时间:2019-06-22 03:01:03

标签: python python-3.x pandas dataframe

我正在使用Python v3.6.7和pandas v.0.24.2。我有一个带有两列(dfA)的数据框(B-multiindex)。我想使用列CA中的值创建第三列(B),具体取决于该行的B是否为空。

DF如下所示:

idx1-idx2  A   B
a-a       23  10
a-b        5  NaN
a-c        6  NaN
a-d       35  10

现在,我想用CA中的值创建列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

谢谢!

0 个答案:

没有答案