【问题标题】:Remove observations based on count of values within an ID column [duplicate]根据 ID 列中的值计数删除观察值 [重复]
【发布时间】:2021-04-29 18:52:41
【问题描述】:

我有一个名为 df 的数据框,我想删除在比赛中少于 2 条狗的价值比赛。我该怎么做?

输入

race_id   dog_id
1         1
1         2
1         3
2         1
2         3
3         1
3         2
3         4
3         5
4         1
4         4

输出

race_id   dog_id
1         1
1         2
1         3
3         1
3         2
3         4
3         5

我试过了

df.loc[lambda x:x.race_id.isin(df.groupby('race_id').dog_id.nunique().gt(2).index.tolist())]

但这不起作用?仍在寻找更简单的解决方案,谢谢!

【问题讨论】:

  • 所以你想删除少于或等于 2 条狗的比赛,对吧?
  • 是的,没错,我想删除少于或等于 2 只狗的比赛。
  • groupby_transformnunique 然后你想保持条件的计数 (lt, gt.eq)..

标签: python pandas


【解决方案1】:
print(df.loc[df.groupby("race_id")["dog_id"].transform("nunique").gt(2)])

打印:

   race_id  dog_id
0        1       1
1        1       2
2        1       3
5        3       1
6        3       2
7        3       4
8        3       5

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-21
    • 2014-06-18
    • 2019-04-17
    • 1970-01-01
    • 1970-01-01
    • 2013-03-12
    • 1970-01-01
    • 2019-05-29
    相关资源
    最近更新 更多