[英]Drop rows based on conditions and create new columns of pandas dataframe
[英]dataframe drop rows based on specific conditions of columns
这是df的一部分:
NUMBER MONEY
12345 20
12345 -20
123456 10
678910 7.6
123457 3
678910 -7.6
我想删除具有相同NUMBER但金额相反的行。
理想的结果如下:
NUMBER MONEY
123456 10
123457 3
如果一个组中只有2行,请使用:
df[df.groupby('NUMBER').MONEY.transform('sum').ne(0)]
NUMBER MONEY
2 123456 10.0
4 123457 3.0
尝试这个,
>>> df[~df.assign(MONEY=df.MONEY.abs()).duplicated(keep=False)]
输出:
NUMBER MONEY
2 123456 10.0
4 123457 3.0
从评论(通过@piRSquared):
通过使用assign,将新列添加到df
,随后的drop_duplicates
同时考虑了NUMBER
和MONEY
的绝对值
df[~df.assign(MONEY=df.MONEY.abs()).duplicated(keep=False)]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.