请提出解决定义的问题陈述的方法和代码

时间:2019-07-23 07:06:46

标签: python-3.x pandas group-by

x   y   z   amount  absolute_amount
121 abc def  500       500
131 fgh xyz -800       800
121 abc xyz  900       900
131 fgh ijk  800       800
141 obc pqr  500       500
151 mbr pqr -500       500
141 obc pqr -500       500
151 mbr pqr  900       900

我需要在数据集中找到x和y相同且条件为的重复行-

  
      
  1. 总和(金额)!= 0
  2.   
  3. abs(sum(amount))!= absolute_amount
  4.   

我尝试将它们分组,并且我在R中使用的代码可以正常工作,但是我需要它在python中工作

logic1 <- tablename %>%
group_by('x','y')%>%
filter(n()>1 && sum(`amount`) != 0 && abs(sum(`amount`)) != absolute_amount)

预期输出

x   y   z   amount  absolute_amount
121 abc def  500       500
121 abc xyz  900       900
151 mbr pqr -500       500
151 mbr pqr  900       900

1 个答案:

答案 0 :(得分:0)

使用transformgroupby.sum()返回每个组的转换总和,然后比较您具有的两个条件:

c=df.groupby(['x','y'])['amount'].transform('sum')
df[c.ne(0) & c.abs().ne(df.absolute_amount)]

     x    y    z  amount  absolute_amount
0  121  abc  def     500              500
2  121  abc  xyz     900              900
5  151  mbr  pqr    -500              500
7  151  mbr  pqr     900              900
相关问题