[英]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.