在pandas中,我想做到:
df.groupby('A').filter(lambda x: x.name > 0)
- 按列 A
进行分组,然后筛选出名称值为非正的组。但是这会取消分组,因为 GroupBy.filter
返回 DataFrame
,从而丢失了分组信息。 我想按这个顺序操作,因为这应该是计算效率较低的方式,因为 filter
后跟 groupby
将在数据帧上进行两次迭代(先过滤再分组)?此外,克隆来自分组的组(到字典或其他某些东西)将使我失去无缝返回数据帧的功能(就像在 .filter
的示例中一样,你直接得到 DataFrame
)
谢谢
示例:
A B
1 -1 1
2 -1 2
3 0 2
4 1 1
5 1 2
df.groupby('A')
:
GroupBy object
-1 : [1, 2]
0 : [3]
1 : [4,5]
GroupBy.filter(lambda x: x.name >= 0)
:
GroupBy object
0 : [3]
1 : [4,5]
df[df['A'] > 0]
上进行分组,而不是在df
上进行分组呢? - Jacquot