如何使用Pandas计算DataFrame中各电影类型对应的平均评分
实现方案
你可以直接使用以下两种方案完成批量计算:
方案1:apply遍历实现(逻辑直观,易调试)
适合数据量不大的场景,逻辑和你之前单类型计算的逻辑完全一致:
# 提取所有类型对应的列名 genre_cols = ["action", "comedy", "drama"] # 逐列遍历,筛选对应类型为1的样本计算评分均值 genre_avg = df1[genre_cols].apply(lambda col: df1[col == 1]["rating"].mean()) # 转换为你需要的单行DataFrame输出格式 result = genre_avg.to_frame().T
输出结果和你预期的结构完全匹配:
| action | comedy | drama |
|---|---|---|
| 4.0 | 4.0 | 3.5 |
方案2:矩阵运算实现(大数据量下效率更高)
利用类型列是0/1值的特性,跳过逐行筛选步骤,直接通过矩阵运算批量计算:
genre_cols = ["action", "comedy", "drama"] # 类型矩阵转置和评分列相乘得到各类型总评分,除以各类型样本数得到均值 genre_avg = (df1[genre_cols].T @ df1["rating"]) / df1[genre_cols].sum() result = genre_avg.to_frame().T
内容的提问来源于stack exchange,提问作者kayak
相关产品推荐
相关产品推荐

