【发布时间】:2017-06-25 18:14:21
【问题描述】:
我有一个关于 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
提前致谢
【问题讨论】: