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

如何使用pandas的pd.merge合并int64与object类型的关联列

问题原因

合并操作要求两侧的连接键数据类型一致,你当前两个DataFrame的Alias Number列分别为int64、object类型,类型不匹配触发报错。

解决方案

将int64类型的Alias Number列统一转为字符串(object)类型即可,因为另一个列包含字母无法转为整数,只能做向字符串的统一转换。

方法1:提前修改原DataFrame列类型

假设ePPQ_NoNA_Alias的Alias Number为int64类型,执行转换代码:

# 转为字符串,同时去除前后空格避免异常匹配
ePPQ_NoNA_Alias['Alias Number'] = ePPQ_NoNA_Alias['Alias Number'].astype(str).str.strip()
# 可选:同时给object类型的列也做去空格处理,避免因多余空格匹配失败
FY17_NoNA_Alias['Alias Number'] = FY17_NoNA_Alias['Alias Number'].str.strip()

之后再执行你原本的merge代码即可正常运行:

ePPQ_FY17_file = pd.merge(ePPQ_NoNA_Alias, FY17_NoNA_Alias, 
                          how='left', on='Alias Number',
                          left_index=False, right_index=False)

方法2:临时转换类型,不修改原DataFrame

如果不想改动原DataFrame的数据,可以在merge时临时转换连接键类型:

ePPQ_FY17_file = pd.merge(
    # 临时转换int类型列为字符串
    ePPQ_NoNA_Alias.assign(**{'Alias Number': lambda df: df['Alias Number'].astype(str).str.strip()}),
    # 临时处理object类型列的空格
    FY17_NoNA_Alias.assign(**{'Alias Number': lambda df: df['Alias Number'].str.strip()}),
    how='left',
    on='Alias Number'
)

注意事项

  • 转换后如果匹配结果不符合预期,可以先检查两类值是否存在大小写差异、多余特殊字符等问题,提前清洗后再合并。

内容的提问来源于stack exchange,提问作者Aaron E Larson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 06:27:03