python - 熊猫添加更高级别的列多索引
问题描述
我正在寻找一种在熊猫中添加更高级别的列索引的方法。
我有一个这样的多索引熊猫数据框:
>>>df
product A B C
sell_buy sell buy sell buy sell buy
group company
1 Bank X 100 50 200 10 20 20
2 Bank Y 20 40 150 40 30 20
3 Bank Z 100 20 20 10 40 10
我想在从 的列中添加更高级别的索引company
,并使用今天的日期设置行索引(使用类似的东西datetime.today()
)
company Bank X Bank Y Bank Z
product A B C A B C A B C
sell_buy sell buy sell buy sell buy sell buy sell buy sell buy sell buy sell buy sell buy
2020-08-15 100 50 200 10 20 20 20 40 150 40 30 20 100 20 20 10 40 10
我尝试了几次,但我不知道如何使它工作......
pd.MultiIndex.from_product([df.columns.levels, ['Bank X']])
pd.MultiIndex.from_product([df.columns.levels, ['product']])
任何帮助,将不胜感激。谢谢!
解决方案
我相信您需要在第一步将第一级转换为date
值,然后通过DataFrame.unstack
,MultiIndex.reorder_levels
和重塑DataFrame.sort_index
:
date = pd.Timestamp('today').floor('d')
df.index = pd.MultiIndex.from_product([[date], df.index.get_level_values(1)])
df = df.unstack().reorder_levels([2,0,1], axis=1).sort_index(axis=1)
print (df)
company Bank X Bank Y Bank Z \
product A B C A B C A
sell_buy buy sell buy sell buy sell buy sell buy sell buy sell buy
2020-08-15 50 100 10 200 20 20 40 20 40 150 20 30 20
company
product B C
sell_buy sell buy sell buy sell
2020-08-15 100 10 20 10 40
推荐阅读
- ios - 如何将多个数据写入firebase?
- node.js - 有没有办法通过从远程 url 下载 pdf 文件来合并 pdf 文件而不使用节点 js 将其保存在我的服务器上?
- kubernetes - 如何使用网络策略允许外部流量并拒绝 Pod 间通信?
- c# - C#如何通过另一个类对象访问类对象的值
- rust - 由于 Libsodium 失败,货物测试不再起作用:pwhash_argon2i 和 pwhash_argon2id
- powershell-3.0 - 文件夹结构中的项目计数和大小
- svg - I complie test code of svgpp ,there is error forbids declaration of ‘BOOST_DELETED_FUNCTION’ with no type。But I have install boost
- python - 在为类和 chrome gui 错误运行我的 selenium 代码时出现两个错误
- elm - Elm 语言中的“Program 是由三个类型变量参数化的类型:flags、model 和 msg”是什么意思?
- php - php preg_replace 正则表达式替换子匹配中的匹配字符