熊猫groupby计数大于1
问题内容:
这肯定是一个简单的问题,但是,这让我有些头疼。
对于以下数据框:
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]
即单线回答。
问题答案:
使用GroupBy.transform
的系列与原来一样同数据框尺寸:
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)