【问题标题】:Delete rows in Multi Index dataframe based on the number of counts of a specific type of occurance根据特定类型出现的计数删除多索引数据框中的行
【发布时间】:2021-05-19 08:16:40
【问题描述】:

我有一个 DataFrame,其中有 2 个主要索引。一个是组,另一个是子组。我有 1 个名为 latex 的列。

如果 group_subGroup 的特定组合的计数

,我想删除所有行

例如,如果我只有 1 个条目的 GroupNumber=103SubGroup=2,我想删除它。

我的数据如下所示:

我尝试了groupby 函数,但无法获取要删除的行`

我如何从这里开始并删除所有只有 1 个唯一组合的行?

【问题讨论】:

    标签: python pandas dataframe pandas-groupby


    【解决方案1】:

    我的输入数据:

    >>> df
        Group  SubGroup  latex
    0       8         3      3
    1       8         3      3
    2       6         2      4  # 1 occurrence (6, 2)
    3       6         1      2  # 1 occurrence (6, 1)
    4       6         3      2  # 1 occurrence (6, 3)
    5       9         3      3
    6       7         3      2
    7       8         2      1  # 1 occurrence (8, 2)
    8       9         3      3
    9       9         3      2
    10      7         1      4
    11      9         1      3  # 1 occurrence (9, 1)
    12      7         1      4
    13      9         3      2
    14      7         3      3
    

    “删除所有只有 1 个唯一组合的行”意味着保留所有大于或等于 2 的组合:

    >>> df.assign(comb=df.groupby(["Group", "SubGroup"])["Group"].transform(len))
        Group  SubGroup  latex  comb
    0       8         3      3     2
    1       8         3      3     2
    2       6         2      4     1  # <- drop
    3       6         1      2     1  # <- drop
    4       6         3      2     1  # <- drop
    5       9         3      3     4
    6       7         3      2     2
    7       8         2      1     1  # <- drop
    8       9         3      3     4
    9       9         3      2     4
    10      7         1      4     2
    11      9         1      3     1  # <- drop
    12      7         1      4     2
    13      9         3      2     4
    14      7         3      3     2
    
    >>> df[df.groupby(["Group", "SubGroup"])["Group"].transform(len).ge(2)]
    
        Group  SubGroup  latex
    0       8         3      3
    1       8         3      3
    5       9         3      3
    6       7         3      2
    8       9         3      3
    9       9         3      2
    10      7         1      4
    12      7         1      4
    13      9         3      2
    14      7         3      3
    

    【讨论】:

    • 不,你错了,乳胶不会告诉乳胶的length。它告诉组合发生的次数。例如,如果我有 6,2,4(您的第一条评论),那么这意味着 6,4 的组合已经出现了 4 次。我想删除图像中M,N,1 的内容。能否请您看一下数据。我已经编辑了我拥有的原始 Df。
    • 您的数据框中是否有可能多次出现(6,2,1)
    • 否,6 表示主组,2 表示子组,1 表示这些东西只有一次。我用过.agg('count)。 1 是count
    猜你喜欢
    • 2016-06-01
    • 2020-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    • 2016-09-05
    • 2017-01-12
    • 2018-01-02
    相关资源
    最近更新 更多