pandas - 更改多索引 Pandas 数据框中的列分组
问题描述
假设有一个数据框:
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
实现这一目标的方法是什么?
解决方案
尝试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
推荐阅读
- python-3.x - 使用旧版本编译 python 文件
- semantic-release - 如果要发布新的主要版本,如何使语义发布中止并失败?
- java - 更新到4.2RC1,透明活动不行?突然变黑
- c# - 连接两个 List 中的元素
在 C# 中使用逗号 - c - 如何判断内存地址是否已被释放?
- nlp - 如何用 nltk 计算条件熵?
- android - dp 可以应用于 TextView 自动调整大小吗?
- excel - 单元格中的 Google 表格/Excel 解析列表并添加
- 每个项目的类
- django - 从 Django 表单过滤的分页结果
- paypal - PayPal API:如何从根交易中获取相关付款