如何按字典分组并汇总熊猫数据框

时间:2020-05-06 14:44:48

标签: python pandas

我有一个带有索引“国家”的数据框“ df”和一个“估计人口”列。 enter image description here

该索引有15个国家/地区名称。 我也有字典:

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'}

词典中的所有国家/地区都出现在数据框中。 使用给定的字典,我需要“按洲对国家进行分组,然后创建一个日期框架,显示每个国家的估计人口的均值和标准差”。

这是我尝试的代码:

df2=df.groupby(ContinentDict)['Estimated Population'].agg({'mean':np.mean,'std':np.std})

运行此代码时,出现错误“没有要聚合的数字类型”

然后我尝试了以下代码:

df2=pd.to_numeric(df.groupby(ContinentDict)['Estimated Population']).agg({'mean':np.mean,'std':np.std})

这给了我错误“缓冲区的维数错误(预期1,得到2)”

如何消除这些错误并获取所需的数据库?

1 个答案:

答案 0 :(得分:3)

在应用Estimated Population函数之前,您需要更改.agg列的 dtype

使用:

df['Estimated Population'] = df['Estimated Population'].astype(float)

或者,

df['Estimated Population'] = pd.to_numeric(df['Estimated Population'])