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

Pandas合并未提取第二个DataFrame的EUR EQUIVALENT列值问题

Pandas左连接后"EUR EQUIVALENT"列无值的排查与解决

你的代码逻辑本身没问题,出现空值的核心原因是用于连接的Period和CCY列存在隐性不匹配,以下是具体排查与解决步骤:

1. 清除连接键的空格/隐藏字符

肉眼看似相同的字符串可能带有前后空格或不可见字符,导致匹配失败。执行以下代码统一处理:

# 去除两个DataFrame连接键的前后空格
df3['Period'] = df3['Period'].str.strip()
df3['CCY'] = df3['CCY'].str.strip()
fx_ytd['Period'] = fx_ytd['Period'].str.strip()
fx_ytd['CCY'] = fx_ytd['CCY'].str.strip()

# 重新执行合并
merged_df = pd.merge(df3, fx_ytd[["Period", "CCY", "EUR EQUIVALENT"]], on=["Period", "CCY"], how="left")

2. 验证连接键的数据类型一致性

即使显示内容相同,数据类型不一致也会导致匹配失败(比如Period一个是字符串、一个是datetime类型)。先排查类型:

# 打印连接键的数据类型
print("df3 Period类型:", df3['Period'].dtype)
print("fx_ytd Period类型:", fx_ytd['Period'].dtype)
print("df3 CCY类型:", df3['CCY'].dtype)
print("fx_ytd CCY类型:", fx_ytd['CCY'].dtype)

如果类型不一致,统一转换为相同类型(比如都转为字符串):

df3['Period'] = df3['Period'].astype(str)
fx_ytd['Period'] = fx_ytd['Period'].astype(str)

3. 检查连接键组合的重叠性

确认两个表的(Period, CCY)组合是否完全对应:

# 输出df3的唯一连接键组合
print("df3的连接键组合:\n", df3[['Period','CCY']].drop_duplicates())
# 输出fx_ytd的唯一连接键组合
print("fx_ytd的连接键组合:\n", fx_ytd[['Period','CCY']].drop_duplicates())

如果发现组合不匹配,针对性修正对应数据即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 19:08:22