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

横截面面板数据场景下如何实现两个DataFrame间的日期-整数映射匹配?

问题分析与解决方案

嘿,我一下子就发现你代码里的问题啦!你在merge的时候把匹配的列搞反了——你用df1的date列去匹配df2的integer列,这两列的内容完全不是同一类数据(一个是日期,一个是整数序号),自然匹配不到任何结果,返回空的DataFrame啦。

正确的合并方式

你需要用df1的date列去匹配df2的date列,这样才能把对应的整数序号映射过来。代码应该改成这样:

import pandas as pd

# 先确保日期列数据类型一致(如果原本是字符串格式,先转成datetime类型)
df1['date'] = pd.to_datetime(df1['date'])
df2['date'] = pd.to_datetime(df2['date'])

# 执行左连接,保留df1里的所有行
df3 = df1.merge(df2, left_on='date', right_on='date', how='left')

提取你需要的目标单列

如果只需要那列1-252的整数序号,直接从合并后的df3里提取即可:

# 获取最终需要的单列
target_series = df3['integer']

这个Series会自动按照每只资产的对应日期重复填充正确的序号,完全符合你的需求。

额外注意事项

  • 一定要确保df1和df2的date列数据类型一致,最好都是datetime64[ns]类型,不然可能出现“日期看起来一样但匹配不上”的奇怪情况。
  • 使用how='left'是为了保证df1里的所有行都被保留,哪怕出现意外的日期不匹配(虽然你说df1是平衡面板,但这个参数能帮你避免不必要的数据丢失)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 06:27:25