簡體   English   中英

pandas:使用unstack時更改multiindex的順序

[英]pandas: Change order of multiindex when using unstack

我有一個關於堆棧列排序的問題。 我們來看看以下DataFrame:

import pandas as pd
df = pd.DataFrame([{'Branch':'A', 'Date':datetime.datetime(2017, 1, 1), 'profit':35},
          {'Branch':'B', 'Date':datetime.datetime(2017, 2, 1), 'profit':10},
          {'Branch':'A', 'Date':datetime.datetime(2017, 2, 1), 'profit':40},
          {'Branch':'B', 'Date':datetime.datetime(2017, 2, 1), 'profit':20},
          {'Branch':'A', 'Date':datetime.datetime(2017, 3, 1), 'profit':80},
          {'Branch':'B', 'Date':datetime.datetime(2017, 3, 1), 'profit':5}
          ])
df.set_index('Date', inplace=True)

現在,我想在使用這樣的unstack之前做一些數學運算:

tmp = df.groupby([pd.TimeGrouper('M'),'Branch']).sum()
pd.DataFrame(tmp.unstack(level='Date'))

有沒有辦法讓結果DataFrame以第一列中的最新日期(2017-03-31)開始,並按降序對剩余的列(日期)進行排序?

我已經嘗試了各種方法,包括( python pandas:reverse df column order )但似乎這不適用於MultiIndex

提前致謝

嘗試這個:

tmp.unstack('Date').sort_index(axis=1, ascending=False)

輸出:

           profit                      
Date   2017-03-31 2017-02-28 2017-01-31
Branch                                 
A            80.0       40.0       35.0
B             5.0       30.0        NaN

暫無
暫無

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

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