如果熊猫满足条件,则更新列
我有一个数据框要处理,我正在执行多项检查。
我正在检查“A”、“B”和“C”列下的重复值是否显示相同的数字,但在 D 列下具有相反的符号。
| 一种 | 乙 | C | D | 乙 |
|---|---|---|---|---|
| 1111 | AAA | 123 | 0.01 | 评论被替换 |
| 2222 | BBB | 456 | 5 | 评论被替换 |
| 3333 | CCC | 789 | 10 | 什么都不做 |
| 1111 | AAA | 123 | -0.01 | 评论被替换 |
| 2222 | BBB | 456 | -5 | 评论被替换 |
| 3333 | CCC | 789 | -9 | 什么都不做 |
回答
我们可以group在列数据框A,B,C在专栏系列绝对值沿D则transform列D使用sum(因为如果对有符号相反则有和必须为零),以检查其幅度相同,但符号相反对的存在
df['E'] = df.groupby(['A', 'B', 'C', df['D'].abs()])['D'].transform('sum').eq(0)
A B C D E
0 1111 AAA 123 0.01 True
1 2222 BBB 456 5.00 True
2 3333 CCC 789 10.00 False
3 1111 AAA 123 -0.01 True
4 2222 BBB 456 -5.00 True
5 3333 CCC 789 -9.00 False