Pandas拼接姓名字段时某字段为空返回空白结果如何解决
解决方案
问题原因
pandas 中默认使用+运算符拼接字符串时,只要参与运算的任意一个值为 NaN,最终结果就会返回 NaN,这是你当前拼接后出现空值的核心原因。
适配 Pandas 1.3.4 可用的修改方案
你可以使用 pandas 内置的str.cat()方法实现带空值的安全拼接,该方法会自动跳过空值且不会生成多余空格,完全适配你使用的版本。
修改后完整代码如下:
import pandas as pd df = pd.read_csv('file.csv', dtype=str, header=0) # 核心修改行:用str.cat拼接,指定分隔符为空格,空值替换为空字符串 df["Full name"] = df["First name"].str.cat(df["Last Name"], sep=" ", na_rep="") df.to_csv('file.csv', index=False)
可选替代写法
如果你更习惯先处理空值再拼接,可以用如下逻辑更直观的写法:
import pandas as pd df = pd.read_csv('file.csv', dtype=str, header=0) # 先把两列的空值替换为空字符串 df["First name"] = df["First name"].fillna("") df["Last Name"] = df["Last Name"].fillna("") # 拼接后用strip去掉首尾多余的空格 df["Full name"] = (df["First name"] + " " + df["Last Name"]).str.strip() df.to_csv('file.csv', index=False)
两种方法最终输出的Full name列都完全符合你给出的预期效果。
内容的提问来源于stack exchange,提问作者FinestRyeBread
相关产品推荐
相关产品推荐

