Python 如何基于另一个数据集的键筛选数据集
我有一个图书评级数据集,看起来像:Python 如何基于另一个数据集的键筛选数据集,python,pandas,numpy,Python,Pandas,Numpy,我有一个图书评级数据集,看起来像: ratings.head() User-ID ISBN Book-Rating 0 276725 034545104X 0 1 276726 0155061224 5 2 276727 0446520802 0 3 276729 052165615X 3 4 276729 0521795028 6 我想按喜欢这本书的用户过滤数据集 我试过: lotr_ratings = ratings[rati
ratings.head()
User-ID ISBN Book-Rating
0 276725 034545104X 0
1 276726 0155061224 5
2 276727 0446520802 0
3 276729 052165615X 3
4 276729 0521795028 6
我想按喜欢这本书的用户过滤数据集
我试过:
lotr_ratings = ratings[ratings['ISBN'] == '0345339703']
liked_lotr = lotr_ratings[lotr_rating['Book-Rating'] == 10] #readers who like lotr
liked_lotr = liked_lotr['User-ID'].to_frame()
ratings[ratings['User-ID'] == liked_lotr] # Filter the original dataset
失败原因:
记忆者
我们将不胜感激。谢谢。看起来您只是想基于多个条件创建一个新的数据帧。这样做:
conditions = (ratings['ISBN'] == '0345339703') & (ratings['Book-Rating'] == 10)
like_lotr = ratings[conditions]
当使用
==
进行比较时,您将广播您的df
以进行(可能)数千次比较,内存将爆炸。相反,使用isin
查找喜欢的批次['User-ID']
中的哪些值也在ratins['User-ID']
评分[(评分['ISBN']='0345339703')和(评分['Book-Rating']==10)]是否返回您期望的结果?更少的中间步骤需要更少的内存。是的,但这只给了我一本书的df。问题是一个用户可能会对多本书进行评分。我想找到特定群体(喜欢isbn 0345339703这本书的人)喜欢的其他书籍。好的,所以可能只需按评分=10过滤,然后pd。将原始列表合并回df,用户id上只有10个评分