【问题标题】:how to delete columns with a certain count condition如何删除具有特定计数条件的列
【发布时间】:2022-01-22 22:35:45
【问题描述】:

我正在尝试删除不包含当月所有 3 个月的 id。 例如,我们有df 为:

id       month   
100        1
100        2
100        3
101        2
102        3

然后我希望新的 df 与 id 100 一样,如下所示:

id       month   
100        1
100        2
100        3

所以我所做的是

df.groupby(['id'].month.count() == 3

这给了我

id        month
100        True
101        False
102        False

我目前不知道如何继续。

【问题讨论】:

标签: python pandas pandas-groupby


【解决方案1】:

我认为你很接近,但你需要稍微修改你的代码。使用您的代码,但将countnunique 交换,这将返回一个series,显示您的ID 与TrueFalse,这取决于他们是否有所有月份。然后,您可以过滤:

t = (df.groupby(['id']).month.nunique() == 3)
print(df.loc[df.id.isin(t[t].index)])

    id  month
0  100      1
1  100      2
2  100      3

【讨论】:

    【解决方案2】:

    您可以使用groupby+transform('nunique') 并在与3 比较后对布尔输出进行切片:

    df[df.groupby('id')['month'].transform('nunique').eq(3)]
    

    输出:

        id  month
    0  100      1
    1  100      2
    2  100      3
    

    注意。如果您确定没有重复的月份,transform('count') 也可以使用

    【讨论】:

      猜你喜欢
      • 2021-08-17
      • 1970-01-01
      • 1970-01-01
      • 2021-04-01
      • 2019-07-30
      • 1970-01-01
      • 1970-01-01
      • 2015-10-16
      • 1970-01-01
      相关资源
      最近更新 更多