首页 > 解决方案 > 如何根据在两个不同列上设置的某些条件填充 pandas 数据框中的列?

问题描述

假设我有一个如下的df:

 A     B    C
null   0   null
null   4   null
5      6   null
0      0    0

现在,我想根据 A 列和 B 列的条件填充我的 C 列:仅当 A 列中的空值与 B 列的“0”相对应时,才让 C 列为空,否则在所有其他情况下将 B 列复制到C列。这意味着我希望我的df看起来像这样:

 A     B    C
null   0   null
null   4    4
5      6    6
0      0    0

我怎样才能在熊猫中实现这一点?任何帮助都将不胜感激,因为我在 python 和 pandas 编程方面相当陌生。

标签: pythonpandas

解决方案


使用Series.fillna+ Series.mask

df['C']=df['C'].fillna(df['B'].mask(df['B'].eq(0)))
print(df)

     A  B    C
0  NaN  0  NaN
1  NaN  4  4.0
2  5.0  6  6.0
3  0.0  0  0.0

或使用Series.where

df['C']=df['B'].mask(df['B'].eq(0)).where(df['C'].isnull(),df['C'])
print(df)

     A  B    C
0  NaN  0  NaN
1  NaN  4  4.0
2  5.0  6  6.0
3  0.0  0  0.0

推荐阅读