2017-04-11 51 views
1

两个Q的:如何设置不同的阵列与大熊猫未成年人指数数据帧多指标

1)是否有可能建立一个多指标熊猫数据帧不同的“小”指标,例如:

Col1 Col2 
0 
    a 0.1 0.01 
    b 0.2 0.02 
    c 0.3 0.03 
1 
    m 0.8 0.00 
    n 0.9 0.01 
    v 0.7 0.10 

当使用熊猫MultiIndex我只能设置为所有主要指数相同的次要指数。我想知道是否有办法指定不同的数组,所有的长度都与次要索引相同? 2)说小指数(a,b,c,m,n,v)是浮点数。有没有办法使用熊猫的平均方法来平均这些值?到目前为止,我只能将未指定为索引的数据平均。

谢谢!

回答

0

是的,是的。

创建多级索引数据:

array = list(zip([0]*3,list('abc')))+list(zip([1]*5,list('vwxyz'))) 
array 

输出:

[(0, 'a'), 
(0, 'b'), 
(0, 'c'), 
(1, 'v'), 
(1, 'w'), 
(1, 'x'), 
(1, 'y'), 
(1, 'z')] 

使用pd.MutliIndex创建索引,并创建一个数据帧:

idx = pd.MultiIndex.from_tuples(array,names=['one','two']) 
df = pd.DataFrame({'Col1':np.random.random(8),'Col2':np.random.random(8)*10},index=idx) 

print(df) 

输出:

   Col1  Col2 
one two      
0 a 0.747933 3.191390 
    b 0.020055 1.726661 
    c 0.342344 5.595333 
1 v 0.298349 5.136354 
    w 0.445190 3.952943 
    x 0.921896 7.905128 
    y 0.782851 0.132475 
    z 0.259996 9.938946 

做整体平均:

df.mean() 

输出:

Col1 0.477327 
Col2 4.697404 
dtype: float64 

不要用 '一' 的意思是:

print(df.groupby(level=0).mean()) 

输出:

  Col1  Col2 
one      
0 0.370111 3.504461 
1 0.541656 5.413169 
+0

就是这样。万岁! – GSEL