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

Pandas拼接两列为新ID列时单列为空结果为空该如何解决

问题原因

pandas 默认的字符串运算规则中,只要参与+拼接的两个值任意一个为NaN(空值),运算结果就会直接返回NaN,所以才会出现只有两列都有值时才正常拼接的情况。


解决方法

方法1:先填充空值再拼接

提前把两列的空值替换为空字符串,再用+拼接即可:

import pandas as pd

f = pd.read_csv('file.csv')
# 填充空值后拼接
f['userID'] = f['destinationUserName'].fillna('') + f['sourceUserName'].fillna('')
keep_col = ['@timestamp', 'message', 'name', 'destinationUserName', 'sourceUserName', 'userID']

new_f = f[keep_col]
new_f.to_csv("newFile.csv", index=False)

方法2:用str.cat()方法(更适合字符串拼接场景)

pandas 字符串专属的cat()方法可以直接指定空值的默认替换值,代码更简洁:

# na_rep参数指定空值替换为对应的内容
f['userID'] = f['destinationUserName'].str.cat(f['sourceUserName'], na_rep='')

注意事项

  • 注意核对CSV表头和代码中调用的列名大小写是否完全一致,你给出的CSV表头是DestinationUsername、sourceUsername,如果大小写不匹配会导致读取不到列、整列为空,也会触发相同的异常结果。
  • 如果需要两列同时为空时userID显示自定义内容,可以在拼接后再加一步填充:f['userID'] = f['userID'].replace('', '未知'),引号内的内容可以按需修改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 18:51:03