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

如何使用Pandas合并两个DataFrame以获取预期输出?

解决Pandas DataFrame合并问题的正确姿势

首先,我明白你想要的是把两个DataFrame基于OBJECTID列对齐,保留df1的所有行,同时把df2中匹配的Test Number值填充进去,不匹配的位置留空。咱们一步步来:

1. 先处理df2的索引问题

你提到df2是切片得到的,索引起始值为2——这个切片后的索引其实和我们要用来合并的OBJECTID列没关系,所以第一步要把它处理掉:

# 重置df2的索引,丢弃原来的切片索引(drop=True避免把旧索引变成新列)
df2 = df2.reset_index(drop=True)

2. 统一列名(可选但更清晰)

看你的df1表头是OBJECTID,df2是ObjectID,大小写不一致可能会导致合并失败,先把列名统一:

df2 = df2.rename(columns={'ObjectID': 'OBJECTID'})

3. 用左连接合并两个DataFrame

我们需要保留df1的所有行,只匹配df2中OBJECTID相同的记录,所以用how='left'的merge操作:

import pandas as pd

# 执行左合并,基于OBJECTID列对齐
merged_df = df1.merge(df2, on='OBJECTID', how='left')

4. 调整输出格式(可选)

如果你的预期输出里空值显示为空白而不是NaN,可以替换一下:

merged_df = merged_df.fillna('')

这样得到的结果就和你期望的结构一致了:df1的所有行都保留,df2中存在的OBJECTID对应的Test Number会填充到对应行,不存在的位置就是空白。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:27:58