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

如何合并两个大型DataFrame并为缺失值赋值NaN?

解决方案

针对你处理大型DataFrame合并的需求,核心是要以df1为基准匹配df2的A列,同时高效处理千万级数据量,具体解决步骤如下:

1. 修正合并方式

你之前用how='right'是错误的——右连接会以df2为基准保留其所有行,而你需要的是保留df1的全部行,缺失匹配值时填充NaN,因此应该用左连接(how='left')。

2. 处理重复值(可选但关键)

如果df2的A列存在重复值,直接合并会产生笛卡尔积,导致结果行数暴增且数据冗余。先对df2的A列去重:

# 保留df2中A列的唯一值,避免合并后行数膨胀
df2_clean = df2.drop_duplicates(subset='A')

3. 高效合并

利用pandas优化后的矢量化合并操作(远快于循环遍历),执行左连接:

# 以df1为基准,匹配df2的D列,无匹配则填充NaN
merged_df = df1.merge(df2_clean, how='left', on='A', sort=False)
  • 设置sort=False可以跳过排序步骤,大幅提升千万级数据的合并速度(如果不需要最终结果按A列排序的话)。

验证示例

用你给出的测试数据执行上述代码,会得到完全符合预期的结果:

A B C     D
x 1 2  10.0
y 5 6   NaN
z 4 4  20.0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 11:01:12