2017-05-15 4 views
0
ので

、まだ私はオーバー混乱していますグループ化されたデータフレームを使用して別の問題...オブジェクト:の管理マルチインデックスデータフレームは、私のように集約辞書を定義している</p> <p>

aggregations_level_1 = { 
     'A': { 
      'mean': 'mean', 
     }, 

     'B': { 
      'mean': 'mean', 
     }, 
    } 

をそして今、私は2つのグループ化されています私は上記を使用して凝集しているデータフレームは、次いで、参加:

grouped_top = 
    df1.groupby(['group_lvl']).agg(aggregations_level_1) 
grouped_bottom = 
    df2.groupby(['group_lvl']).agg(aggregations_level_1) 

これらの参加:

私は、インデックスと列を呼び出す場合
df3 = grouped_top.join(grouped_bottom, how='left', lsuffix='_top_10', 
rsuffix='_low_10') 

         A_top_10  A_low_10  B_top_10  B_low_10 
         mean   mean   mean   mean 
group_lvl          
    a     3.711413 14.515901  3.711413  14.515901 
    b     4.024877 14.442106  3.694689  14.209040 
    c     3.694689 14.209040  4.024877  14.442106 

今、私が持っている:私は、インデックスa,b,cとの定期的なデータフレームオブジェクトを持っていますが、各列はマルチインデックス・オブジェクトであるかのように

print df3.index 
    >> Index([u'a', u'b', u'c'], dtype='object', name=u'group_lvl') 

print df3.columns 
    >> MultiIndex(levels=[[u'A_top_10', u'A_low_10', u'B_top_10', u'B_low_10'], [u'mean']], 
     labels=[[0, 1, 2, 3], [0, 0, 0, 0]]) 

だから、それが見えます。これは正しい解釈ですか?

  • どのようにスライスして呼び出すのですか?すべてa,b,cにつきましてはA_top_10, A_low_10としたいとします。
  • acの場合、A_top_10, B_top_10のみ?

私は非常に混乱しているので、全体的な助けが素晴らしいと思います!

答えて

1

slicersが必要ですが、sort_index他のエラーによる最初のソート列:私はより良い、非常に近いと思います

So, it looks as though I have a regular DataFrame-object with index a,b,c but each column is a MultiIndex-object. Is this a correct interpretation?

UnsortedIndexError: 'MultiIndex Slicing requires the index to be fully lexsorted tuple len (1), lexsort depth (0)'

df = df.sort_index(axis=1) 

idx = pd.IndexSlice 
df1 = df.loc[:, idx[['A_low_10', 'A_top_10'], :]] 
print (df1) 
      A_low_10 A_top_10 
       mean  mean 
group_lvl      
a   14.515901 3.711413 
b   14.442106 4.024877 
c   14.209040 3.694689 

そして:

idx = pd.IndexSlice 
df2 = df.loc[['a','c'], idx[['A_top_10', 'B_top_10'], :]] 
print (df2) 
      A_top_10 B_top_10 
       mean  mean 
group_lvl      
a   3.711413 3.711413 
c   3.694689 4.024877 

EDITはMultiIndexcolumnsにあるとします。

関連する問題