首页 > 解决方案 > Python Pandas:多个聚合 -> 值列表

问题描述

我有一个 DataFrame,其中包含应用于多个列的多个聚合函数的结果,例如:

bar = pd.DataFrame([
    {'a': 1, 'b': 2, 'grp': 0}, {'a': 3, 'b': 8, 'grp': 0}, 
    {'a': 2, 'b': 2, 'grp': 1}, {'a': 4, 'b': 5, 'grp': 1}
])
bar.groupby('grp').agg([np.mean, np.std])

        a               b
    mean   std      mean  std
grp             
0   2   1.414214    5.0 4.242641
1   3   1.414214    3.5 2.121320

我想将聚合结果组合到列表(或元组):

grp        a                 b  
0   [2, 1.414214]     [5.0, 4.242641]
1   [3, 1.414214]     [3.5, 2.121320]

这样做的正确方法是什么?

提前致谢!

标签: pythonpandasdataframe

解决方案


如果您必须在列中使用列表。你可以

In [60]:  bar.groupby('grp').agg(lambda x: [x.mean(), x.std()])
Out[60]:
                             a                          b
grp
0    [2.0, 1.4142135623730951]   [5.0, 4.242640687119285]
1    [3.0, 1.4142135623730951]  [3.5, 2.1213203435596424]

不建议为 pandas 存储这样的数据。


推荐阅读