问题 在pandas groupby之后删除一个组


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


12659
2018-06-04 05:00


起源



答案:


已经分组过滤DataFrame 讨论。未来的熊猫版本可能包括 一种更方便的方法

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

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

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

df[grouped[0].transform(lambda x: x.name != group_name).astype('bool')]

13
2018-06-04 11:27



真棒。谢谢。这比我希望的更明显 - 不是太痛苦。 - geomando
这不是要求我们“重新创建”这些组,因为我们只是在改变df吗?他们的任何发展都让我们更容易做到这一点吗? - user2051561


答案:


已经分组过滤DataFrame 讨论。未来的熊猫版本可能包括 一种更方便的方法

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

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

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

df[grouped[0].transform(lambda x: x.name != group_name).astype('bool')]

13
2018-06-04 11:27



真棒。谢谢。这比我希望的更明显 - 不是太痛苦。 - geomando
这不是要求我们“重新创建”这些组,因为我们只是在改变df吗?他们的任何发展都让我们更容易做到这一点吗? - user2051561


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

df = df[df[group] != group_name]

0
2018-06-04 05:44



也许我误解了变量的含义 group,但您不能通过GroupBy对象索引DataFrame。 - Dan Allan
我认为它应该是`df = df [df [group_name]!= group_label]。但海报使用group_name ad group_label - waitingkuo
你如何制作group_name? - Dan Allan