You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于movies与users DataFrame构建电影为行用户为列的m×u矩阵

报错原因
  • pivot()方法仅支持最多3个位置参数(分别对应行索引、列索引、填充值),你直接将users表的5个字段解包传入,参数数量不匹配自然报错。
  • 你当前仅持有movies(电影维度表)、users(用户维度表)两张没有直接关联的表,缺少记录用户和电影交互关系的ratings评分表,本身就无法直接构建电影×用户矩阵。
正确实现步骤
  1. 准备关联用的评分表,表中至少包含movie_id、UserID、rating三个核心字段,用来关联电影和用户两类数据。
  2. 数据关联后调用pivot方法生成矩阵,示例代码如下:
import pandas as pd

# 合并评分表与电影表(可选,仅需要保留电影维度字段时操作)
rating_full = ratings.merge(movies, on='movie_id', how='left')

# 生成电影为行、用户为列的评分矩阵
movie_user_matrix = rating_full.pivot(
    index='movie_id', # 行用电影ID,也可替换为Title字段(需保证电影名无重复)
    columns='UserID', # 列用用户ID
    values='rating' # 矩阵填充值为评分,无评分的位置自动填充NaN
)
  1. 若仅需要统计用户是否看过对应电影的布尔矩阵,无需合并其他表,直接用crosstab方法更简便:
movie_user_matrix = pd.crosstab(index=ratings['movie_id'], columns=ratings['UserID'])

注:如果存在同一用户对同一部电影多次评分的情况,需使用pivot_table方法指定aggfunc聚合规则避免报错,示例:

movie_user_matrix = rating_full.pivot_table(
    index='movie_id',
    columns='UserID',
    values='rating',
    aggfunc='mean' # 重复评分取平均值
)

内容的提问来源于stack exchange,提问作者Vasudha Pasumarthi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 04:24:07