2017-05-08 97 views
1

我創建了一個數據透視表,該數據透視表根據其中一列和時間索引的月份進行分組。如何重新編制熊貓數據透視表

這是透視表

    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) 

理想情況下,你會使用一個明確的多指標,但我不知道這是否可能。