Skip to main content
 首页 » 编程设计

python之如何根据在两个不同列上设置的某些条件填充 pandas 数据框中的列

2024年08月12日33kerrycode

假设我有一个像下面这样的 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 

我怎样才能在 Pandas 中实现这一点? 任何帮助将不胜感激,因为我是 python 和 pandas 编程的新手。

请您参考如下方法:

使用numpy.where条件由 & 链接,用于按位与:

import numpy as np 
 
m1 = df.A.isna() 
m2 = df.B.eq(0) 
df['C'] = np.where(m1 & m2, np.nan, df.B) 
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