如何用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
相关产品推荐
相关产品推荐

