22

是否可以从 pandas 的 groupby 对象中删除一个组(按组名)?也就是说,在执行 groupby 之后,根据其名称删除结果组。

4

4 回答 4

19

已经讨论了按组过滤 DataFrame 。未来的 pandas 版本可能包括更方便的方法

但目前,我认为这是grouped按名称过滤 GroupBy 对象并返回剩余组的 DataFrame 的最简洁的方法。

df.drop(grouped.get_group(group_name).index)

这是从上面的链接派生的更通用的方法:

df[grouped[0].transform(lambda x: x.name != group_name).astype('bool')]
于 2013-06-04T11:27:13.997 回答
2

似乎没有直接的方法可以从 groupby 对象中删除组。我认为您可以在 groupby by 之前过滤掉那些 groupby

df = df[df[group] != group_name]
于 2013-06-04T05:44:33.330 回答
1

就是这么简单,你需要用到filter函数和lambda exp:

df_filterd=df.groupby('name').filter(lambda x:(x.name == 'cond1' or...(other condtions )))

你需要注意,如果你想使用更多的条件把它放在括号()中..你会得到一个 DataFrame 而不是 GroupObject。

于 2021-10-20T11:09:54.523 回答
0

应该很容易:

df.drop(index='group_name',inplace=True)

于 2019-11-14T23:49:46.150 回答