Pandas拼接姓名列时仅为两列全空行填充John Doe的实现问题
问题原因
你的原有代码存在两处核心问题:
- 列名拼写错误:原始数据列名为
Last Name(Name首字母大写),你代码中写为Last name会触发KeyError - 填充逻辑错误:你直接修改原始的姓名列、替换空格为John Doe的逻辑完全不符合需求,且拼接时多余的空格会导致全空行的结果为空白字符串,没有替换为目标值
修正后代码
import pandas as pd df = pd.read_csv('file.csv', dtype=str, header=0) # 拼接姓名,空值填充为空字符串后去除首尾多余空格 df['fullname'] = (df['First name'].fillna('') + ' ' + df['Last Name'].fillna('')).str.strip() # 仅对拼接后全空的行替换为John Doe df.loc[df['fullname'] == '', 'fullname'] = 'John Doe' df.to_csv('file.csv', index=False)
逻辑说明
- 拼接时先把两列的缺失值替换为空字符串,拼接后用
str.strip()清理首尾空格,得到的结果:- 两列都有值的行正常输出全名
- 只有单列有值的行会自动去掉多余空格,保留原有内容
- 两列都为空的行处理后结果为空字符串
- 单独针对空字符串的行替换为
John Doe,不会影响其他部分非空的行,完全匹配你的需求
内容的提问来源于stack exchange,提问作者FinestRyeBread
相关产品推荐
相关产品推荐

