You need to enable JavaScript to run this app. 使用pandas按id关联两个CSV数据框新增文本列,处理未匹配空值
优惠活动
大模型
产品
解决方案
定价
更多

使用pandas按id关联两个CSV数据框新增文本列,处理未匹配空值

问题根源

你写的合并代码默认使用pd.merge的**内连接(inner join)**规则:只会保留两个文件中id能双向匹配的行,单边存在的id会被直接剔除,因此无法实现「未匹配项保留空值」的要求。

对应实现方案

场景1:以train.csv为基准,保留train全部行

也就是所有train里的记录都要保留,text匹配不到对应id时,text字段自动填充null,只要修改merge的连接参数即可:

import pandas as pd

train = pd.read_csv("train.csv")
text = pd.read_csv("text.csv")

# 左连接:以左表(train)的所有行为基准匹配右表(text)
combined = pd.merge(train, text, on=['id'], how='left')

# 可选:调整列顺序为你预期的id、sentiment、text顺序
combined = combined[['id', 'sentiment', 'text']]

# 可选:导出结果为csv文件
combined.to_csv("combined_result.csv", index=False)

场景2:保留两个文件的所有id记录

如果需要不管是train独有还是text独有的id都要保留,匹配不到的对应字段自动填null,把连接方式改成全外连接即可:

combined = pd.merge(train, text, on=['id'], how='outer')

常见踩坑提示

  • 如果读取text.csv时因为文本内容含逗号、换行符出现解析错位,可以在pd.read_csv时加上engine='python'参数,提升复杂文本的解析兼容性。
  • 合并后如果出现重复的id行,说明你的源csv里存在重复id,可以在merge前先通过train = train.drop_duplicates(subset=['id'])、text = text.drop_duplicates(subset=['id'])去重,避免合并结果行数异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.26 18:54:02