我有一个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]


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

提前致谢!

最佳答案

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

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]


不建议为熊猫存储像这样的数据。

关于python - Python Pandas:多个聚合->值列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52202301/

10-12 23:24