如何在Python中合并两个以日期和交易对为索引的MultiIndex DataFrame
合并MultiIndex DataFrame的解决方案
嘿,这个需求用pandas的concat()方法就能完美解决!你的两个DataFrame结构完全匹配——都是以date和ticker为多层索引,且仅包含close列,直接拼接后再整理索引顺序即可得到你想要的格式。
完整实现步骤
- 补全DataFrame的初始化代码(把你给出的片段完善为可运行的完整代码):
import pandas as pd from datetime import datetime as dtm # 初始化USDT_BTC的DataFrame data_usdtbtc = { 'close': [13769, 13351], 'date': [dtm(2017, 12, 31), dtm(2018, 1, 1)], 'ticker': ['USDT_BTC', 'USDT_BTC'] } df_usdtbtc = pd.DataFrame(data_usdtbtc).set_index(['date', 'ticker']) # 初始化USDT_ETH的DataFrame data_ethbtc = { 'close': [736, 754], 'date': [dtm(2017, 12, 31), dtm(2018, 1, 1)], 'ticker': ['USDT_ETH', 'USDT_ETH'] } df_ethbtc = pd.DataFrame(data_ethbtc).set_index(['date', 'ticker'])
- 执行合并操作:
# 拼接两个DataFrame并按多层索引排序 merged_df = pd.concat([df_usdtbtc, df_ethbtc]).sort_index()
验证结果
运行后打印merged_df,输出完全符合你想要的格式:
close date ticker 2017-12-31 USDT_BTC 13769 USDT_ETH 736 2018-01-01 USDT_BTC 13351 USDT_ETH 754
补充说明
concat()会直接把两个结构一致的DataFrame按行堆叠,因为它们的索引和列完全匹配,不会出现错位问题。- 加上
sort_index()是为了确保同一个日期下的两个交易对被归为一组,让结果更规整;如果你的原始DataFrame已经按日期排序,这一步也可以省略,但加上会更稳妥。
内容的提问来源于stack exchange,提问作者RiskTech
相关产品推荐
相关产品推荐

