假设我有一个像下面这样的数据集
df = pd.DataFrame({'x1':['a','a','b','b'], 'x2':[True, True, True, False], 'x3':[1,1,1,1]})
df
x1 x2 x3
0 a True 1
1 a True 1
2 b True 1
3 b False 1
我经常想执行分组聚合操作,我按多列分组并将多个函数应用于一列。此外,我通常不想要多索引、多级表。为了完成这个,我用了三行代码,这似乎太多了。
例如
bg = df.groupby(['x1', 'x2']).agg({'x3': {'my_sum':np.sum, 'my_mean':np.mean}})
bg.columns = bg.columns.droplevel(0)
bg.reset_index()
有没有更好的方法?不要提示,但我来自 R/data.table 背景,像这样的东西是一个很好的单行,比如
df[, list(my_sum=sum(x3), my_mean=mean(x3)), by=list(x1, x2)]
最佳答案
这个怎么样:
In [81]: bg = df.groupby(['x1', 'x2'], as_index=False)['x3'].agg({'my_sum':np.sum, 'my_mean':np.mean})
In [82]: print bg
x1 x2 my_sum my_mean
0 a True 2 1
1 b False 1 1
2 b True 1 1
关于python - 使用 Pandas 聚合数据并保留表结构和列名的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34625318/