Pandas groupby 计数大于 1

Pou*_*del 9 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
Run Code Online (Sandbox Code Playgroud)

如何获得计数> 1的输出?

我试过了:

df.groupby(['c0','c1'])['c2'].count()
c0  c1
a   a     2
b   bb    1
Run Code Online (Sandbox Code Playgroud)

需要的是:

c0  c1
a   a     2
Run Code Online (Sandbox Code Playgroud)

我正在寻找其他

x = df.groupby(['c0','c1'])['c2'].count()
x[x>1]
Run Code Online (Sandbox Code Playgroud)

即单行答案。

jez*_*ael 20

使用GroupBy.transform的系列与原来一样同数据框尺寸:

df1 = df[df.groupby(['c0','c1'])['c2'].transform('count') > 1]
Run Code Online (Sandbox Code Playgroud)

DataFrame.duplicated用于按列表中的指定列过滤所有重复行:

df1 = df[df.duplicated(['c0','c1'], keep=False)]
Run Code Online (Sandbox Code Playgroud)

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

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