删除Dataframe中的行:不包含在轴中的标签

时间:2017-12-01 03:16:42

标签: python pandas

我有一个包含三列的表:user_idbook_idrating。因此,一行显示用户对图书的评分。

我试图删除与评分少于10本书的用户相对应的行。我做了类似于这个问题的答案Remove low frequency values from pandas.dataframe中描述的内容。这是我的代码:

threshold = 10
value_counts = ratings['user_id'].value_counts()
to_remove = value_counts[value_counts <= threshold].index
ratings.drop(to_remove, axis=0, inplace=True)

当我运行它时,我在最后一行收到错误:

ValueError: labels [40518 21743 30824 <...> 47178 46308 30460] not contained in axis

该表有979478行,因此应存在具有这些索引的行。我做错了什么?

1 个答案:

答案 0 :(得分:4)

使用isin,因为user_id不是索引,我们不能在这里使用.drop

threshold = 10
value_counts = ratings['user_id'].value_counts()
to_remove = value_counts[value_counts <= threshold].index
ratings.loc[~ratings['user_id'].isin(to_remove),:]