Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何基于另一个数据集的键筛选数据集_Python_Pandas_Numpy - Fatal编程技术网

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个评分