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

Python查找两个DataFrame日期列共同日期对应行索引及报错解决

错误原因
  • 你当前代码的逻辑是对两个长度不同的日期列做逐元素对等比较,pandas要求逐元素比较的两个序列长度必须完全一致,你的ff有8132行、pp只有3457行,长度不匹配就会触发这个报错。
  • 这种逐行比较的逻辑本身也不符合需求:你要找的是两个表都存在的日期,不是位置相同且日期相等的行,就算两个表长度一致,这么写也拿不到跨位置的共同日期。
实现方案

方案1:直接拼接得到目标数据集(推荐)

直接用pandas内置的merge方法取共同日期拼接,不需要自己手动找行号:

import pandas as pd

# 原有数据读取逻辑保留
ff = pd.read_excel('Europe_5_Factors_Daily.xlsx', sheet_name='Factors')
pp = pd.read_excel('Europe_5_Factors_Daily.xlsx', sheet_name='Sheet1')
ff = ff.iloc[:, 0:4]

# 统一日期格式,避免字符串/时间类型不匹配导致匹配失败
ff['Date'] = pd.to_datetime(ff['Date'])
pp['Date'] = pd.to_datetime(pp['Date'])

# 按Date列取交集拼接,how='inner'就是取两个表都存在的日期
merged_df = pd.merge(ff, pp, on='Date', how='inner')

得到的merged_df就包含共同日期、ff对应列、pp对应列的完整数据。

方案2:单独获取共同日期对应行号

如果确实需要单独提取两个表中共同日期对应的行号,可以用如下逻辑:

# 先统一日期格式
ff['Date'] = pd.to_datetime(ff['Date'])
pp['Date'] = pd.to_datetime(pp['Date'])

# 取两个表的共同日期集合
common_dates = set(ff['Date']) & set(pp['Date'])

# 分别提取两个表对应行号
ff_common_index = ff[ff['Date'].isin(common_dates)].index.tolist()
pp_common_index = pp[pp['Date'].isin(common_dates)].index.tolist()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 11:15:06