2017-05-08 11 views
1

私は、時間インデックスの1つの列と月に従ってグループ化したピボットテーブルを作成しました。パンダのピボットテーブルを再インデックスする方法

これは、今、私は2月にはこの方法のインデックスを再作成しようとしてアルファベット順

行進し、時系列に表示される4月ではなく、希望のピボットテーブル

    AWRT  AWFT  AWDT 
Time  type         
April All 38.190119 65.789103 27.598984 
     DHW 19.676627 60.889196 41.212569 
     SH 47.342757 61.335566 13.992809 
February All 43.896487 57.982944 14.086457 
     SH 40.864670 50.567133 9.702463 
March All 42.083836 69.139818 27.055982 
     DHW 18.908873 62.936898 44.028024 
     SH 52.249342 70.013904 17.764563 

です:

new_index=[['February', 'March', 'April'], ['All', 'DHW', 'SH']] 
df1=df1.reindex(new_index) 

私はもうピボットテーブルではない次を入手してください:

 AWRT  AWFT  AWDT 
Time  type         
February All 43.896487 57.982944 14.086457 
March DHW 18.908873 62.936898 44.028024 
April SH 47.342757 61.335566 13.992809 

私はピボットテーブルインデックスのラベルに直接アクセスしようとしましたが、これらは不変であると言われています。

あなたが適切にインデックスを再するために、マルチインデックスを作成する必要があなたの助け

答えて

2

再インデックスのみ関連レベル(level=0):

import pandas as pd 

idx = pd.MultiIndex(levels=[['April', 'February', 'March'], ['All', 'DHW', 'SH']], 
        labels=[[0, 0, 0, 1, 1, 2, 2, 2], [0, 1, 2, 0, 2, 0, 1, 2]], 
        names=['Time', 'type']) 
df = pd.DataFrame([[38.190119, 65.789103, 27.598984], 
        [19.676627, 60.889196, 41.212569], 
        [47.342757, 61.335566, 13.992809], 
        [43.896487, 57.982944, 14.086457], 
        [40.864670, 50.567133, 9.702463], 
        [42.083836, 69.139818, 27.055982], 
        [18.908873, 62.936898, 44.028024], 
        [52.249342, 70.013904, 17.764563]], 
        columns=['AWRT', 'AWFT', 'AWDT'], 
        index=idx) 

print(df) 

#      AWRT  AWFT  AWDT 
# Time  type         
# April All 38.190119 65.789103 27.598984 
#   DHW 19.676627 60.889196 41.212569 
#   SH 47.342757 61.335566 13.992809 
# February All 43.896487 57.982944 14.086457 
#   SH 40.864670 50.567133 9.702463 
# March All 42.083836 69.139818 27.055982 
#   DHW 18.908873 62.936898 44.028024 
#   SH 52.249342 70.013904 17.764563 

print(df.reindex(['February', 'March', 'April'], level=0)) 

#      AWRT  AWFT  AWDT 
# Time  type         
# February All 43.896487 57.982944 14.086457 
#   SH 40.864670 50.567133 9.702463 
# March All 42.083836 69.139818 27.055982 
#   DHW 18.908873 62.936898 44.028024 
#   SH 52.249342 70.013904 17.764563 
# April All 38.190119 65.789103 27.598984 
#   DHW 19.676627 60.889196 41.212569 
#   SH 47.342757 61.335566 13.992809 
1

を事前に感謝:

new_index = pd.MultiIndex.from_product(
    [['February', 'March', 'April'], ['All', 'DHW', 'SH']], 
    names=['Time', 'type'] 
) 
df1.reindex(new_index) 

理想的には、あなたがカテゴリマルチインデックスを使用すると思いますが、私それが可能かどうかは分かりません。

関連する問題