使用 pandas 数据框组 agg 函数
Posted
技术标签:
【中文标题】使用 pandas 数据框组 agg 函数【英文标题】:using pandas dataframe group agg function 【发布时间】:2017-04-06 05:39:15 【问题描述】:有一个数据框,比如说
df
Country Continent PopulationEst
0 Germany Europe 8.036970e+07
1 Canada North America 35.239865+07
...
我想创建一个显示大小(每个大陆的国家数量)以及每个国家/地区估计人口的总和、平均值和标准偏差的日期框。
我做了以下事情:
df2 = df.groupby('Continent').agg(['size', 'sum','mean','std'])
但结果 df2 有多个级别的列,如下所示:
df2.columns
MultiIndex(levels=[['PopulationEst'], ['size', 'sum', 'mean', 'std']],
labels=[[0, 0, 0, 0], [0, 1, 2, 3]])
如何从列中删除 PopulationEst
,所以只有 ['size', 'sum', 'mean', 'std']
列用于数据框?
【问题讨论】:
【参考方案1】:我认为您需要添加 ['PopulationEst']
- agg
使用此列进行聚合:
df2 = df.groupby('Continent')['PopulationEst'].agg(['size', 'sum','mean','std'])
示例:
df = pd.DataFrame(
'Country': ['Germany', 'Germany', 'Canada', 'Canada'],
'PopulationEst': [8, 4, 35, 50],
'Continent': ['Europe', 'Europe', 'North America', 'North America'],
columns=['Country','PopulationEst','Continent'])
print (df)
Country PopulationEst Continent
0 Germany 8 Europe
1 Germany 4 Europe
2 Canada 35 North America
3 Canada 50 North America
df2 = df.groupby('Continent')['PopulationEst'].agg(['size', 'sum','mean','std'])
print (df2)
size sum mean std
Continent
Europe 2 12 6.0 2.828427
North America 2 85 42.5 10.606602
df2 = df.groupby('Continent').agg(['size', 'sum','mean','std'])
print (df2)
PopulationEst
size sum mean std
Continent
Europe 2 12 6.0 2.828427
North America 2 85 42.5 10.606602
另一个解决方案是MultiIndex.droplevel
:
df2 = df.groupby('Continent').agg(['size', 'sum','mean','std'])
df2.columns = df2.columns.droplevel(0)
print (df2)
size sum mean std
Continent
Europe 2 12 6.0 2.828427
North America 2 85 42.5 10.606602
【讨论】:
如果我或其他答案有帮助,请不要忘记accept。谢谢。 谢谢!结果正是我想要的。【参考方案2】:我认为这可以满足您的需求:
grouping = 'Continent': ['size'], 'PopEst':['sum', 'mean', 'std']
df.groupby('Continent').agg(grouping)
【讨论】:
以上是关于使用 pandas 数据框组 agg 函数的主要内容,如果未能解决你的问题,请参考以下文章
pandas使用groupby函数基于指定分组变量对dataframe数据进行分组使用agg函数计算每个分组不同数值变量的聚合统计值agg参数为字典指定不同变量的聚合计算统计量的形式
pandas使用groupby函数agg函数获取每个分组聚合对应的均值(mean)实战:计算分组聚合单数据列的均值计算分组聚合多数据列的均值