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

合并Pandas DataFrame时出现object与int32列类型不匹配报错如何解决

报错核心原因是合并操作的两个关联键数据类型不匹配:左表df_FOMC_dates使用的关联键FOMC_date为日期/字符串类型,右表df_melt_test_percent使用的关联键DayNumber为整数类型,两类数据无法直接关联,因此触发报错。

原代码的逻辑偏差在于没有先通过日期匹配拿到FOMC日期对应的交易日序号,直接尝试跨类型关联,修正后的代码如下:

# 给交易数据按日期排序,生成连续交易日序号,同时提取日期列用于匹配
df_melt_test_percent = df_melt_test_percent.sort_index().assign(
    DayNumber=lambda x: range(len(x)),
    # 若交易日期本身就是单独的列而非索引,替换为对应列名即可
    trade_date=lambda x: x.index
)

# 先通过日期匹配,拿到每个FOMC日期对应的交易日序号
tmp = pd.merge(
    df_FOMC_dates, 
    df_melt_test_percent[['trade_date', 'DayNumber']],
    left_on='FOMC_date', 
    right_on='trade_date'
).drop(columns=['trade_date'])

# 生成每个FOMC日期前后3天的偏移量
tmp['delta'] = tmp.apply(lambda _: range(-3, 4), axis=1)
tmp = tmp.explode('delta')
tmp['DayNumber'] += tmp['delta']

# 关联回原交易数据表得到最终结果
result = pd.merge(tmp, df_melt_test_percent, on='DayNumber')

额外注意事项

  • 匹配前建议先统一两个表的日期格式为pandas datetime类型,避免字符串格式差异导致匹配失败:
df_FOMC_dates['FOMC_date'] = pd.to_datetime(df_FOMC_dates['FOMC_date'])
df_melt_test_percent['trade_date'] = pd.to_datetime(df_melt_test_percent['trade_date'])
  • 若df_melt_test_percent的日期存储在普通列而非索引中,只需将trade_date=lambda x: x.index替换为对应的日期列名即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 12:48:04