如何在熊猫中按索引列出现频率的阈值删除行



>我有一个这样的数据帧:

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

我想删除用户 ID 出现超过 2 次的所有行并获取一个新数据帧,如下所示。有人可以帮助我吗?谢谢。

userid itemid timestamp
  2       1      40
  2       2      50

您可以使用pd.Series.value_counts并计算按条件过滤的userid数组。然后使用它来筛选原始数据帧。

c = df['userid'].value_counts()
idx = c[c > 2].index
res = df[~df['userid'].isin(idx)]
print(res)
   userid  itemid  timestamp
4       2       1         40
5       2       2         50

最新更新