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

解决Nested Renamer错误并按大洲构建人口统计DataFrame

问题:按大洲分组统计人口数据并修正"Nested Renamer not supported"错误

需求说明

  • 使用给定的ContinentDict字典将国家按大洲分组
  • 创建DataFrame,展示每个大洲的以下统计项:
    • 样本量(组内国家数量)
    • 各国人口估计值的总和、均值、标准差
  • DataFrame索引需为指定列表['Asia', 'Australia', 'Europe', 'North America', 'South America'],列名为['size', 'sum', 'mean', 'std']

给定字典

ContinentDict  = {'China':'Asia', 
                  'United States':'North America', 
                  'Japan':'Asia', 
                  'United Kingdom':'Europe', 
                  'Russian Federation':'Europe', 
                  'Canada':'North America', 
                  'Germany':'Europe', 
                  'India':'Asia',
                  'France':'Europe', 
                  'South Korea':'Asia', 
                  'Italy':'Europe', 
                  'Spain':'Europe', 
                  'Iran':'Asia',
                  'Australia':'Australia', 
                  'Brazil':'South America'}

错误代码及问题

当前代码运行时抛出**"Nested Renamer not supported"**错误:

top15 = answer_one()
ContinentDict  = {'China':'Asia',
'United States':'North America',
'Japan':'Asia',
'United Kingdom':'Europe',
'Russian Federation':'Europe',
'Canada':'North America',
'Germany':'Europe',
'India':'Asia',
'France':'Europe',
'South Korea':'Asia',
'Italy':'Europe',
'Spain':'Europe',
'Iran':'Asia',
'Australia':'Australia',
'Brazil':'South America'}
top15['Continent'] = top15.index.to_series().map(ContinentDict)
top15['Population Estimate']= (top15['Energy Supply']/top15['Energy Supply per Capita']).astype(float)
result = top15.set_index('Continent').groupby(level = 0)['Population Estimate'].agg({'size':np.size, 'sum':np.sum, 'mean':np.mean,'std':np.std})
return result

修正方案

错误根源是Pandas 0.25及以上版本不再支持用字典传递列名映射给agg()方法,需改用关键字参数或元组列表指定聚合规则,同时还要按要求固定索引顺序。

修正后的完整代码:

import numpy as np
import pandas as pd

top15 = answer_one()  # 假设该函数返回包含所需数据的DataFrame
ContinentDict  = {'China':'Asia',
'United States':'North America',
'Japan':'Asia',
'United Kingdom':'Europe',
'Russian Federation':'Europe',
'Canada':'North America',
'Germany':'Europe',
'India':'Asia',
'France':'Europe',
'South Korea':'Asia',
'Italy':'Europe',
'Spain':'Europe',
'Iran':'Asia',
'Australia':'Australia',
'Brazil':'South America'}

# 添加大洲列和人口估计列
top15['Continent'] = top15.index.to_series().map(ContinentDict)
top15['Population Estimate'] = (top15['Energy Supply'] / top15['Energy Supply per Capita']).astype(float)

# 修正聚合方式,用关键字参数指定列名与对应聚合函数
result = top15.groupby('Continent')['Population Estimate'].agg(
    size=np.size,
    sum=np.sum,
    mean=np.mean,
    std=np.std
)

# 按指定顺序重新排列索引
target_index = ['Asia', 'Australia', 'Europe', 'North America', 'South America']
result = result.reindex(target_index)

return result

关键修正点

  1. 聚合写法调整:放弃字典式的聚合参数,改用关键字参数传递列名和对应函数,适配Pandas新版本规范,避免嵌套重命名错误。
  2. 索引顺序固定:通过reindex()方法将结果索引调整为需求指定的大洲顺序,确保输出符合要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 14:00:29