【问题标题】:Delete a group after pandas groupby在 pandas groupby 之后删除一个组
【发布时间】:2013-05-30 09:26:29
【问题描述】:

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

【问题讨论】:

    标签: python pandas


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      应该很容易:

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

      【讨论】:

        【解决方案3】:

        按组过滤 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')]
        

        【讨论】:

        • 太棒了。谢谢。这比我希望的要明显一些——不会太痛苦。
        • 这是否需要我们“重新创建”组,因为我们只是在更改 df?他们是否有任何发展可以让我们更轻松地做到这一点?
        【解决方案4】:

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

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

        【讨论】:

        • 也许我误解了变量 group 的含义,但是您不能通过 GroupBy 对象来索引 DataFrame。
        • 我认为应该是`df = df[df[group_name] != group_label]。但海报使用 group_name 广告 group_label
        • 你如何制作 group_name?
        猜你喜欢
        • 2020-11-26
        • 1970-01-01
        • 2014-09-05
        • 2021-04-15
        • 2016-10-01
        • 2016-07-23
        • 2019-11-15
        相关资源
        最近更新 更多