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

如何基于公共索引配对合并两个带DatetimeIndex的pandas DataFrame

问题原因

你之前的代码返回全False是因为isin()的传参错误:
isin()需要传入由待匹配值组成的可迭代对象,你写的[df2.index]是把整个DatetimeIndex对象作为单个元素放进了列表,相当于要在df1的索引里找值等于「整个df2索引对象」的项,自然没有任何匹配结果。

正确实现方案

以下两种方法都可以得到你需要的结果,按需选择即可:

  • 方法1:内连接合并(推荐,逻辑最简洁)
    直接用pandas的merge方法按索引做内连接,会自动保留两个DataFrame共有的索引行:
    import pandas as pd
    # 左右均用索引作为连接键,连接方式选inner(内连接,保留共有键)
    df = df1.merge(df2, left_index=True, right_index=True, how='inner')
    
  • 方法2:修正索引筛选逻辑后拼接
    如果你习惯先筛选索引再拼接的写法,去掉isin()里多余的列表嵌套即可:
    # 直接传入df2.index作为匹配集合,不要额外套列表
    common_date_mask = df1.index.isin(df2.index)
    df1_common = df1[common_date_mask]
    # 按列方向拼接,自动对齐索引
    df = pd.concat([df1_common, df2], axis=1)
    
效果说明

因为df1不存在缺失日期,最终返回的DataFrame行数和df2的有效行数一致,会保留原有的Value df1、Value df2两列,行索引为两个表共有的日期,和你给出的预期输出格式完全匹配。

内容的提问来源于stack exchange,提问作者jei L

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 23:54:32