我正在groupby从Pandas 创建一个对象,DataFrame并希望选择> 1大小的所有组.
以下似乎不起作用:
grouped[grouped.size > 1 ]
Run Code Online (Sandbox Code Playgroud)
另外,如何从分组中筛选出某些值DataFrame?例如,如何删除grouped列'name'具有值的所有行'foo'或'bar'?
受控示例:
df = pandas.DataFrame({'A': ['foo','bar','foo','foo'],
'B': range(4)})
grouped = df.groupby('A')
Run Code Online (Sandbox Code Playgroud)
groupby删除组大小<= 1的组后,我需要该对象.
我尝试了以下,但没有用:
grouped[grouped.size() > 1]
Run Code Online (Sandbox Code Playgroud)
我期望:
A
foo 0
2
3
Run Code Online (Sandbox Code Playgroud)
我不确定索引/切片如何对该grouped对象起作用.
ely*_*ase 42
从pandas 0.12开始,您可以:
>>> grouped.filter(lambda x: len(x) > 1)
A B
0 foo 0
2 foo 2
3 foo 3
Run Code Online (Sandbox Code Playgroud)
Sea*_*der 11
我发现transform它比filter非常大的数据帧效率高得多:
element_group_sizes = df['A'].groupby(df['A']).transform('size')
df[element_group_sizes>1]
Run Code Online (Sandbox Code Playgroud)
或者,在一行中:
df[df['A'].groupby(df['A']).transform('size')>1]
Run Code Online (Sandbox Code Playgroud)
如果您仍需要解决方法:
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24055 次 |
| 最近记录: |