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

Pandas如何基于另一列统计单列两类唯一值并新增列到原DataFrame

pandas按影片维度统计评级次数并新增字段实现方案

假设你持有的原始DataFrame名为df,其中包含影片名称列、评级列(值仅为1、2两类)及第三列业务字段,可按以下方法实现需求:

给原DataFrame新增*Grade1Sum、*Grade2Sum字段

直接用分组transform实现统计值按原表行对齐广播,同一影片的所有行将自动填充相同的累计统计值,和你举例的「ET所有行*Grade1Sum均为3」的逻辑完全一致,代码如下:

# 请将代码里的MovieName替换为你实际的影片列名,Grade替换为你实际的评级列名
df['*Grade1Sum'] = df.groupby('MovieName')['Grade'].transform(lambda x: (x == 1).sum())
df['*Grade2Sum'] = df.groupby('MovieName')['Grade'].transform(lambda x: (x == 2).sum())

单独按影片维度统计各评级出现次数

如果不需要把统计值拼回原表,仅需要各影片对应1、2级评分的次数统计结果,任选以下一种写法即可:

  • 写法1:用交叉表快速生成统计结果
grade_stat = pd.crosstab(df['MovieName'], df['Grade'])
grade_stat.columns = ['*Grade1Sum', '*Grade2Sum']
  • 写法2:用分组聚合+长表转宽表实现
grade_stat = df.groupby(['MovieName', 'Grade']).size().unstack(fill_value=0)
grade_stat.columns = ['*Grade1Sum', '*Grade2Sum']

效果验证

用测试数据跑通后的效果如下,完全匹配需求:

影片名评级评分人*Grade1Sum*Grade2Sum
ET1张三31
ET1李四31
ET1王五31
ET2赵六31
流浪地球1孙七11
流浪地球2周八11

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 01:54:24