据帧AGG一系列

问题描述 投票:1回答:2

我想DataFrame.agg的输出转换为一系列其中指数是列名和AGG函数名的组合。

见我

In [132]: df = pd.DataFrame({ 
     ...:     col: np.random.rand(5) for col in 'abc' 
     ...: })                                                                              

In [133]: out = df.agg(['sum', 'min', 'max'])                                             

In [134]: out                                                                             
Out[134]: 
            a         b         c
sum  2.898835  2.767717  2.270150
min  0.234784  0.492247  0.164680
max  0.913080  0.678060  0.773441

出像到输出转换为一系列像指数:a_sum, a_min, a_max, b_sum, b_min, b_max ...

我看了pivot但我无法弄清楚如何使它做到这一点。

python pandas
2个回答
1
投票

可以叠加或熔化的数据和连接索引

out = out.T.stack()
out.index = out.index.map('_'.join)

a_sum    1.258670
a_min    0.022124
a_max    0.758263
b_sum    2.661875
b_min    0.273627
b_max    0.770407
c_sum    2.833126
c_min    0.163624
c_max    0.997125

0
投票

由于OP问,这里是melt做到这一点的一种方法:

from itertools import product

ind = [''.join([x[1], '_', x[0]]) for x in list(product(list(out), out.index.tolist()))]
out = out.melt()
out.variable = ind
© www.soinside.com 2019 - 2024. All rights reserved.