【发布时间】:2017-10-06 13:13:28
【问题描述】:
我按多列对数据框进行分组并聚合以获得多个统计信息。如何获得一个完全扁平的结构,其中每个可能的组键组合被枚举为行,每个统计数据都以列的形式出现?
import numpy as np
import pandas as pd
cities = ['Berlin', 'Oslo']
days = ['Monday', 'Friday']
data = pd.DataFrame({
'city': np.random.choice(cities, 12),
'day': np.random.choice(days, 12),
'people': np.random.normal(loc=10, size=12),
'cats': np.random.normal(loc=6, size=12)})
grouped = data.groupby(['city', 'day']).agg([np.mean, np.std])
这样我得到了:
cats people
mean std mean std
city day
Berlin Friday 6.146924 0.721263 10.445606 0.730992
Monday 5.239267 NaN 9.022811 NaN
Oslo Friday 6.322276 0.866899 11.579813 0.114341
Monday 5.028919 0.815674 10.458439 1.182689
我需要把它弄平:
city day cats_mean cats_std people_mean people_std
Berlin Friday 6.146924 0.721263 10.445606 0.730992
Berlin Monday 5.239267 NaN 9.022811 NaN
Oslo Friday 6.322276 0.866899 11.579813 0.114341
Oslo Monday 5.028919 0.815674 10.458439 1.182689
【问题讨论】:
-
您可以调用
grouped.reset_index()将索引恢复到列 -
@EdChum 它仍然在那里留下一个 MultiIndex,因此很难将聚合统计信息作为列操作
-
分配回
grouped = grouped.reset_index(),好的,你也想展平列 -
无济于事,仍然无法引用列,例如 grouped['mean'] 引发 KeyError
-
对不起,我看到你也想把列弄平
标签: python pandas indexing aggregate