假设有一个数据框:
df = pd.DataFrame({
'day': ['mon', 'mon', 'mon'],
'fruit': ['apple', 'apple', 'orange'],
'size': ['big', 'small', 'big'],
'price': [10, 11, 15],
'amount': [10, 10, 20]
}).set_index('day')
df = df.groupby(['day', 'fruit', 'size'])['price', 'amount'].apply(lambda df: df.reset_index(drop=True)).unstack(level=[2])
price amount
size big small big small
day fruit
mon apple 0 10.0 11.0 10.0 10.0
orange 0 15.0 NaN 20.0 NaN
我想将列的顺序从价格->大/小,金额->大/小改为大->价格/金额,小->价格/金额。所以预期的数据帧是:
big small
size price amount price amount
day fruit
mon apple 0 10.0 10.0 11.0 10.0
orange 0 15.0 20 Nan NaN
实现此目标的方法是什么?
答案 0 :(得分:2)
尝试swaplevel
和sort_index
df_swap = df.swaplevel(0, 1, axis=1).sort_index(axis=1, ascending=[True,False])
Out[840]:
size big small
price amount price amount
day fruit
mon apple 0 10.0 10.0 11.0 10.0
orange 0 15.0 20.0 NaN NaN