簡體   English   中英

熊貓電子表格

[英]Pandas spreadsheet like tabular

考慮以下數據幀:

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],
})

我要達到的是類似這樣的表格形式(或完全一樣):

例

通過使用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)

這似乎有點駭人聽聞...我似乎找不到一種方法(或在文檔中查找的正確位置)以我想要的方式正確地分組和聚合數據。

有沒有適當的方法?

這可能是一點點清潔劑:

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

基本上,無需將函數集分別應用於兩個組並將結果附加在一起。 這實際上是group by所做的事情:拆分,應用(單獨)並合並。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM