如何使用pandas multiindex

时间:2017-04-11 18:39:04

标签: pandas dataframe mean hierarchical-data multi-index

两个q:

1)是否可以创建具有不同“次要”索引的MultiIndex Pandas DataFrame,例如:

   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

使用Pandas MultiIndex时,我只能设法为所有主要索引设置相同的次要索引。我想知道是否有办法指定不同的数组,所有数组都是相同的长度,作为次要指数?

2)说小指数(a,b,c,m,n,v)是浮点数。有没有办法使用pandas mean方法来平均这些值?到目前为止,我只能对未指定为索引的数据进行平均。

谢谢!

1 个答案:

答案 0 :(得分: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