如何在熊猫中过滤groupby对象

时间:2019-07-23 06:59:51

标签: python pandas dataframe

我有这样的df

A  B
1  1
1  2
1  3
2  2
2  1 
3  2
3  3
3  4

我想提取col B不像升序的行

A B
2 2
2 1

我尝试过

df.groupby("A").filter()...

但是我堆叠起来以提取。

如果您有任何解决方案,请告诉我。

2 个答案:

答案 0 :(得分:2)

一种方法是使用pandas.Series.is_monotonic

df[df.groupby('A')['B'].transform(lambda x:not x.is_monotonic)]

输出:

   A  B
3  2  2
4  2  1

答案 1 :(得分:1)

GroupBy.transformSeries.diff一起使用,并与Series.lt进行比较,并与Series.any至少比较一个负值,并通过boolean indexing进行过滤:

df1 = df[df.groupby('A')['B'].transform(lambda x: x.diff().lt(0).any())]
print (df1)
   A  B
3  2  2
4  2  1