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

pandas如何合并带datetime索引的异构DataFrame,保留重复行与缺失值?

实现方案

步骤1:统一索引类型(关键前置操作)

多数匹配失败的问题都是两个表的datetime索引格式不一致导致的,比如一个为字符串类型、一个为datetime类型,或者时区存在差异,先统一格式:

import pandas as pd

# 统一转换为无时区的datetime类型,避免隐性匹配失效
lots.index = pd.to_datetime(lots.index).dt.tz_localize(None)
measurements.index = pd.to_datetime(measurements.index).dt.tz_localize(None)

步骤2:执行索引外连接

使用外连接即可完全满足需求,如果两个表存在同名字段,可通过suffixes参数加后缀区分:

merged_df = lots.merge(
    measurements,
    how="outer",
    left_index=True,
    right_index=True,
    # 无同名字段可删除下一行参数
    suffixes=("_lots", "_measure")
)

结果说明

合并后的结果完全符合要求:

  • Measurements中同一datetime的多条重复记录,会自动匹配Lots中对应datetime的唯一行,生成对应数量的重复行,Lots相关字段会自动重复填充
  • 仅存在于单个表的datetime索引,对应另一个表的字段统一填充为NaN
  • 两个表的所有字段都会完整保留

你此前测试的how="outer"逻辑本身是正确的,没有得到预期结果基本都是索引格式不匹配导致的,完成步骤1的预处理后再执行合并即可。

内容的提问来源于stack exchange,提问作者Mohamed Arebi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 18:54:02