簡體   English   中英

如何在pandas中轉動multilabel表

[英]How to pivot multilabel table in pandas

我正在嘗試導入有關不同商品價格變化的數據。 數據保存在MySQL中。 我已經以類似於以下內容的堆疊格式導入輸入數據幀df

 ID    Type      Date      Price1   Price2
0001    A     2001-09-20    30       301
0002    A     2001-09-21    31       278
0003    A     2001-09-22    28       299
0004    B     2001-09-18    18       159
0005    B     2001-09-20    21       157
0006    B     2001-09-21    21       162
0007    C     2001-09-19    58       326
0008    C     2001-09-20    61       410
0009    C     2001-09-21    67       383

並且,為了執行時間序列分析,我想轉換為另一種類似於以下的格式:

               A               B              C
             Price1  Price2  Price1  Price2  Price1  Price2
Date   
2001-09-18   NULL     NULL    18       159    NULL    NULL
2001-09-19   NULL     NULL   NULL     NULL     58     326
2001-09-20   30       301    21        157     61     410
2001-09-21   31       278    21        168     67     383
2001-09-22   28       299    NULL     NULL    NULL    NULL

我看過這個問題 這兩種建議的方式都不是我想要實現的。 關於pivot的pandas文檔似乎也沒有提到任何相關內容。

您可以通過重塑pivotset_indexunstack ,但這時需要swaplevelsort_index的預期Multiindex列:

df1 = (df.drop('ID', axis=1)
         .pivot('Date','Type')
         .swaplevel(0,1, axis=1)
         .sort_index(axis=1))

df1 = (df.drop('ID', axis=1)
         .set_index(['Date','Type'])
         .unstack()
         .swaplevel(0,1, axis=1)
         .sort_index(axis=1))

df1 = (df.set_index(['Date','Type'])[['Price1','Price2']]
         .unstack()
         .swaplevel(0,1, axis=1)
         .sort_index(axis=1))

print (df1)
Type            A             B             C       
           Price1 Price2 Price1 Price2 Price1 Price2
Date                                                
2001-09-18    NaN    NaN   18.0  159.0    NaN    NaN
2001-09-19    NaN    NaN    NaN    NaN   58.0  326.0
2001-09-20   30.0  301.0   21.0  157.0   61.0  410.0
2001-09-21   31.0  278.0   21.0  162.0   67.0  383.0
2001-09-22   28.0  299.0    NaN    NaN    NaN    NaN

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM