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

如何用Pandas将用户观影次数DataFrame转换为指定电影列表的计数向量

实现方法

核心用Pandas原生的宽表转换+列重对齐逻辑即可,全程无复杂自定义循环,符合Pandas向量化编码风格。

完整代码示例

import pandas as pd

# 原始数据(替换为你自己的DataFrame即可)
df = pd.DataFrame({
    'userID': ['u1', 'u1', 'u2', 'u3'],
    'movieID': ['mv1', 'mv2', 'mv1', 'mv4'],
    'timesWatched': [5, 2, 1, 30]
})
movies = ['mv0', 'mv1', 'mv2', 'mv3', 'mv4', 'mv5']

# 核心处理逻辑
res_df = pd.crosstab(
    index=df['userID'],
    columns=df['movieID'],
    values=df['timesWatched'],
    aggfunc='sum'
).reindex(columns=movies, fill_value=0)

# 输出指定格式结果
for user, watch_count in res_df.iterrows():
    print(f"{user} : {watch_count.tolist()}")

逻辑说明

  • pd.crosstab 直接将长表转为用户为行、电影为列的宽表,同一个用户同一部电影的多条记录会自动累加观影次数,鲁棒性更强
  • reindex 按照给定的movies列表顺序调整列顺序,不在原始数据中的电影会自动补列,统一填充值为0
  • 最终每行数据直接转list就是对应顺序的观影次数列表

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 19:15:03