我有一个关于堆栈列排序的问题。我们来看看以下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
提前致谢
答案 0 :(得分:0)
试试这个:
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