我正在groupby
从 Pandas 创建一个对象,DataFrame
并希望选择所有大小大于 1 的组。
例子:
A B
0 foo 0
1 bar 1
2 foo 2
3 foo 3
以下似乎不起作用:
grouped = df.groupby('A')
grouped[grouped.size > 1]
预期结果:
A
foo 0
2
3
从 pandas 0.12 开始,您可以执行以下操作:
>>> grouped.filter(lambda x: len(x) > 1)
A B
0 foo 0
2 foo 2
3 foo 3
我发现transform
它比filter
非常大的数据框更有效:
element_group_sizes = df['A'].groupby(df['A']).transform('size')
df[element_group_sizes>1]
或者,在一行中:
df[df['A'].groupby(df['A']).transform('size')>1]
如果您仍然需要解决方法:
In [49]: pd.concat([group for _, group in grouped if len(group) > 1])
Out[49]:
A B
0 foo 0
2 foo 2
3 foo 3