我想过滤掉groupby之后差值小于20的行。
这是我原来的table
A B Value
1 1 0
1 2 10
1 2 20
1 2 25
2 1 0
2 1 15
2 1 100
在“df.groupby(['A','B'])”之后,它将是
A B Value
1 1 0
1 2 10
2 20
2 25
2 1 0
1 15
1 100
我想过滤那些差异小于20的行。
例如,
Group[A=1][B=1]row1没有上一行,因此过滤掉。
Group[A=1][B=2]row1没有上一行,因此过滤掉。
组[A=1][B=2]第2行的差异为10,因此保留该值。
组[A=2][B=1]第3行的差异为100,因此过滤掉。
我期望的结果是:
A B Value
1 2 20
1 2 25
2 1 15
下面是我的尝试:
df.groupby(['A', 'B']).filter(lambda x : (x['Value'] - x['Value'].shift(1) < 20).any())
但它不起作用。
任何建议都将不胜感激
2条答案
按热度按时间j2qf4p5b1#
做一个月一个月
cwtwac6a2#
df[cond1]