Skip to main content
 首页 » 编程设计

python之在 Pandas 数据框中跨列查找匹配值

2025年05月04日22dflying

是否有内置函数允许仅选择在 pandas 中具有匹配列值的行?

例如,我有一个 pandas 数据框,它由用户列、他们评价的每个电影项目以及他们给它的评价组成(见下文)。有没有办法使用 numpy 或 pandas 快速选择两个用户都评价过的电影?换句话说,输出已被相关用户 (a) 和所有其他用户评分的所有电影的列表/数组/数据框?

在下面的示例中,所有用户都对电影 7 进行了评分。因此,对于用户 (a)=8 的查询,理想情况下会输出该用户和其他所有用户的所有常见评分。

user    movie   rating 
8        7        5.0 
8       1333      3.0 
50      3321      1.0 
50      3363      2.0 
50        7       3.0 
83       50       4.0 
83       7        5.0 
etc      etc      etc 
 
output for user 8 
50        7       3.0 
83       7        5.0 

请您参考如下方法:

也许是这样的:

In [11]: df.loc[(df["user"] != 8) & (df["movie"].isin(df.loc[(df.user == 8), "movie"]))] 
Out[11]: 
   user  movie  rating 
4    50      7     3.0 
6    83      7     5.0