You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中合并两个以日期和交易对为索引的MultiIndex DataFrame

合并MultiIndex DataFrame的解决方案

嘿,这个需求用pandas的concat()方法就能完美解决!你的两个DataFrame结构完全匹配——都是以date和ticker为多层索引,且仅包含close列,直接拼接后再整理索引顺序即可得到你想要的格式。

完整实现步骤

  1. 补全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'])
  1. 执行合并操作:
# 拼接两个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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:19:20