我想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
但我无法弄清楚如何使它做到这一点。
可以叠加或熔化的数据和连接索引
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
由于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