假设我有 3 个数据框,
df_1
代表收入
Year TSLA MSFT AVY
2019 851 200 112.8
2018 725 150 92.6
df_2
代表一些其他收入
Year TSLA MSFT AVY
2019 10 13 17
2018 11 14 18
和
df_3
代表费用
Year TSLA MSFT AVY
2019 110 213 317
2018 111 214 418
获取以下 df 的代码可能是什么?
TSLA MSFT AVY
Year revenues other_revenues expenses revenues other_revenues expenses revenues other_revenues expenses
2019 851 10 110 200 13 213 112.8 17 317
2018 725 11 111 150 14 214 92.6 18 418
其中的列采用多索引形式?
谢谢
concat
与 DataFrame.swaplevel
和 DataFrame.sort_index
进行排序 MultiIndex
:
#if not Year is index first create it
L = [x.set_index('Year') for x in [df_1, df_2, df_3]]
df = (pd.concat(L,
axis=1,
keys=('revenues', 'other_revenues', 'expenses'))
.swaplevel(1, 0, axis=1)
.sort_index(axis=1))
print (df)
AVY MSFT TSLA \
revenues expenses other_revenues revenues expenses other_revenues revenues
Year
2019 112.8 317 17 200 213 13 851
2018 92.6 418 18 150 214 14 725
expenses other_revenues
Year
2019 110 10
2018 111 11
编辑:对于像原始订单一样的顺序,从 DataFrame.reindex
第一级的唯一值中添加
MultiIndex.from_product
:
MultiIndex