繁体   English   中英

数据框根据列的特定条件删除行

[英]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同时考虑了NUMBERMONEY的绝对值

df[~df.assign(MONEY=df.MONEY.abs()).duplicated(keep=False)]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM