[英]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.