繁体   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