这肯定是一个简单的问题,但是,这使我有些困惑。
对于以下数据框:
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
用于具有与原始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)
关于python - Pandas groupby计数大于1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55360314/