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

如何按国家与ESG类别计算2012-2021年ESG值的平均值?

按国家和ESG类别计算2012-2021年平均值的解决方案

问题背景

现有数据集包含10个国家、29个ESG类别(对应Series Name字段)、2012-2021年的时间序列数据,每个国家-年份-ESG类别组合都有对应的ESG Value。需求是计算每个国家下,各ESG类别在2012-2021年间的ESG值平均值。

原代码问题分析

你之前的代码:

mean_value = df.groupby('Series Name')[['Year', 'ESG Value']].mean()

存在两个核心问题:

  1. 仅按Series Name分组,未加入Country Name,无法区分不同国家的同一ESG类别数据
  2. 对Year列计算均值无意义,年份是离散标识字段,且该操作可能因数据类型异常导致返回inf(无穷大)结果

正确实现代码

1. 分组计算均值

按国家+ESG类别双维度分组,仅对ESG Value计算平均值:

# 分组计算均值,重置索引为普通列
mean_values = df.groupby(['Country Name', 'Series Name'])['ESG Value'].mean().reset_index()
  • groupby(['Country Name', 'Series Name']):确保每个分组是「某国某ESG类别」的所有年份数据
  • ['ESG Value'].mean():仅针对目标数值列计算均值,避免无效计算
  • reset_index():将分组后的索引转为普通列,方便后续处理

2. 格式化输出结果

如果需要像示例那样输出结构化字符串,可遍历结果行:

# 遍历结果,按指定格式打印
for _, row in mean_values.iterrows():
    # 保留4位小数,可根据需求调整
    print(f"{row['Country Name']} - {row['Series Name']} - Year 2012~2021 - ESG mean = {row['ESG Value']:.4f}")

示例输出效果

运行后会得到类似如下的结果:

China - CO2 emissions (metric tons per capita) - Year 2012~2021 - ESG mean = X.XXXX
China - Control of Corruption: Estimate - Year 2012~2021 - ESG mean = X.XXXX

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 01:55:15