Pandas按date和count分组创建新列计算moy占比的实现咨询
用pandas计算分组内占比的实现方法
你需要创建名为new的新列,按date和count字段分组,计算当前行moy值占所属分组全部moy值总和的比例,直接使用pandas的分组聚合+映射功能即可实现,核心代码如下:
import pandas as pd # 核心计算逻辑 df['new'] = df['moy'] / df.groupby(['date', 'count'])['moy'].transform('sum')
代码说明
groupby(['date', 'count']):指定按照date、count两个字段对数据集进行分组transform('sum'):将分组后的moy求和结果映射回原数据集的每一行,和原数据集行数完全匹配,不会出现聚合后行数压缩的问题- 直接将每行
moy值除以对应分组的moy总和,即可得到你需要的比例值,和你给出的示例逻辑完全一致
如果需要保留指定小数位,可以调整代码:
# 保留2位小数 df['new'] = (df['moy'] / df.groupby(['date', 'count'])['moy'].transform('sum')).round(2) # 如果需要转为百分比格式 df['new'] = (df['moy'] / df.groupby(['date', 'count'])['moy'].transform('sum') * 100).round(1).astype(str) + '%'
内容的提问来源于stack exchange,提问作者biwia
相关产品推荐
相关产品推荐

