像表格一样的熊猫电子表格

时间:2014-01-07 15:33:45

标签: python pandas

考虑以下数据框:

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'split_1':[1,2,2,2,1,2,2,2,1,1],
    'split_2':[3,3,3,4,4,4,4,3,3,3],
    'var_1':[1,2,4,3,2,4,2,2,1,2],
    'var_2':[4,2,2,2,1,5,4,3,4,3],
})

我想要获得的是类似(或完全)类似的表格:

Example

通过使用groupby和agg方法,我走得很远。

grp = df.groupby(['split_1','split_2'])

tab1 = grp['var_1'].agg([np.mean, np.median, np.max, np.min, np.size])
tab2 = grp['var_2'].agg([np.mean, np.median, np.max, np.min, np.size])

tab = tab1.append(tab2)

这看起来像是hackish ......我似乎无法找到一种方式(或在文档中查找的正确位置)以我想要的方式正确地分组和聚合数据。

有没有正确的方法?

1 个答案:

答案 0 :(得分:4)

这可能有点清洁:

In [15]: grp = df.groupby(['split_1','split_2'])

In [16]: grp.agg([np.mean, np.median, np.max, np.min, np.size]).stack(0)
Out[16]: 
                           mean  median  amax  amin  size
split_1 split_2                                          
1       3       var_1  1.333333       1     2     1     3
                var_2  3.666667       4     4     3     3
        4       var_1  2.000000       2     2     2     1
                var_2  1.000000       1     1     1     1
2       3       var_1  2.666667       2     4     2     3
                var_2  2.333333       2     3     2     3
        4       var_1  3.000000       3     4     2     3
                var_2  3.666667       4     5     2     3

基本上,不需要将这组函数分别应用于这两组,并将结果附加在一起。这基本上是分组所做的:分割,应用(单独)和组合。