【发布时间】:2013-05-30 09:26:29
【问题描述】:
是否可以从 pandas 中的 groupby 对象中删除一个组(按组名)?也就是说,在执行 groupby 之后,根据其名称删除结果组。
【问题讨论】:
是否可以从 pandas 中的 groupby 对象中删除一个组(按组名)?也就是说,在执行 groupby 之后,根据其名称删除结果组。
【问题讨论】:
就是这么简单,需要用到filter函数和lambda exp:
df_filterd=df.groupby('name').filter(lambda x:(x.name == 'cond1' or...(other condtions )))
你需要注意,如果你想使用更多的条件将它放在括号()中。 你会得到一个 DataFrame 而不是 GroupObject。
【讨论】:
应该很容易:
df.drop(index='group_name',inplace=True)
【讨论】:
按组过滤 DataFrame 是 discussed。未来的 pandas 版本可能包括a more convenient way to do it。
但目前,我认为这是按名称过滤 GroupBy 对象 grouped 并返回剩余组的 DataFrame 的最简洁的方法。
df.drop(grouped.get_group(group_name).index)
这是从上面的链接派生的更通用的方法:
df[grouped[0].transform(lambda x: x.name != group_name).astype('bool')]
【讨论】:
似乎没有直接的方法可以从 groupby 对象中删除组。我认为您可以在 groupby by 之前过滤掉那些 groupby
df = df[df[group] != group_name]
【讨论】:
group 的含义,但是您不能通过 GroupBy 对象来索引 DataFrame。