【问题标题】:Pandas - group by id and drop duplicatesPandas - 按 id 分组并删除重复项
【发布时间】:2017-03-29 09:48:32
【问题描述】:

我有以下数据。

userid itemid timestamp
  1       1      50
  1       2      50
  1       3      50
  1       4      60
  2       1      40
  2       2      50

我想删除具有重复时间戳的用户。 在上面的示例中,我想删除 userid=1,因为他在 timestamp=50 处查看了多个项目。不应删除 userid=2,因为他查看过不同时间戳的项目。

谁能帮帮我?

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    选项 1
    使用duplicated

    dropid = df.loc[
        df.duplicated(subset=['userid', 'timestamp']),
        'userid'
    ].unique()
    df[~df.userid.isin(dropid)]
    

    选项 2
    使用groupbyfilter

    df.set_index(['userid', 'timestamp']).groupby(level=0).filter(
        lambda x: ~x.index.is_unique
    ).reset_index()
    

    【讨论】:

      猜你喜欢
      • 2017-09-28
      • 2021-11-13
      • 2021-12-11
      • 2022-08-03
      • 2019-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-29
      相关资源
      最近更新 更多