如何使用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
相关产品推荐
相关产品推荐

