熊猫groupby计数大于1

时间:2019-03-26 15:01:49

标签: python pandas

这必须是一个简单的问题,但是,这使我的头有些困惑。

对于以下数据框:

df = pd.DataFrame({'c0': ['a','b','a'],'c1': ['a','bb','a'],'c2':[10,20,30]})
  c0  c1  c2
0  a   a  10
1  b  bb  20
2  a   a  30

如何在count> 1的地方获得输出?

我尝试过:

df.groupby(['c0','c1'])['c2'].count()
c0  c1
a   a     2
b   bb    1

必填项是:

c0  c1
a   a     2

我正在寻找

x = df.groupby(['c0','c1'])['c2'].count()
x[x>1]

即一线回答。

1 个答案:

答案 0 :(得分:2)

GroupBy.transform用于具有与原始DataFrame相同大小的Series:

df1 = df[df.groupby(['c0','c1'])['c2'].transform('count') > 1]

或使用DataFrame.duplicated通过列表中的指定列过滤所有重复行:

df1 = df[df.duplicated(['c0','c1'], keep=False)]

如果性能不重要或较小的DataFrame,请使用DataFrameGroupBy.filter

df1 = df.groupby(['c0','c1']).filter(lambda x: len(x) > 1)