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