2015-07-21 201 views
1

列應用聚合函數我通過取最大值的Z列生成以下透視表:對大熊貓透視表

val 
X x1  x2 
Y y1 y2 y1 y2 
ID 
a 9 1 5 11 
b 8 10 7 6 

採取最大的Z值後,我要報mean(y1,y2)。期望的表格是:

val 
X x1   x2 
Y mean(y1,y2) mean(y1,y2) 
ID 
a 5   8 
b 9   6.5 

如何使用熊貓來實現這一目標?

我MWE:

#!/usr/bin/python 
from pandas import DataFrame 
import pandas as pd 
import numpy as np 

data=pd.read_table('data.txt') 
pv=data.pivot_table(index=['ID'], columns=['X','Y'], values=['val'], aggfunc=np.max) 
print pv 

data.txt

ID X Y Z val 
a x1 y2 z1 1 
b x1 y1 z2 2 
a x2 y2 z2 3 
a x1 y1 z4 4 
a x2 y1 z1 5 
b x2 y2 z3 6 
b x2 y1 z2 7 
b x1 y1 z3 8 
a x1 y1 z3 9 
b x1 y2 z3 10 
a x2 y2 z2 11 

回答

2

可以傳遞一個level PARAM和axis到calc下的mean用於期望軸水平:

In [142]: 
pv.mean(level='X', axis=1) 

Out[142]: 
X x1 x2 
ID   
a 5 8.0 
b 9 6.5