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

Pandas DataFrame含缺失值的字符串列拼接问题求助

解决多列姓名拼接问题

问题分析

你当前的代码存在两个核心问题:

  • 拼接时未在姓名各部分之间添加空格
  • 空值被直接转为字符串"None"并参与拼接

解决方案

方法一:使用apply逐行过滤空值后拼接

通过apply遍历每一行,先筛选出非空的姓名字段,再用空格连接:

import pandas as pd

df['name'] = df.apply(
    lambda row: ' '.join(
        [str(val) for val in [row['first_name'], row['second_name'], row['third_name']] 
         if pd.notna(val) and val is not None]
    ),
    axis=1
)

该方法会自动跳过NaN或None的字段,只保留有实际内容的姓名部分,且用单个空格分隔。

方法二:填充空值后拼接,再清理多余空格

先把所有空值填充为空字符串,拼接后再去除首尾空格和中间的连续空格:

# 填充空值为空字符串并转为字符串类型
df['name'] = (
    df['first_name'].fillna('').astype(str)
    + ' ' + df['second_name'].fillna('').astype(str)
    + ' ' + df['third_name'].fillna('').astype(str)
)
# 清理多余空格:去除首尾空格,将连续空格替换为单个空格
df['name'] = df['name'].str.strip().str.replace(r'\s+', ' ', regex=True)

这种方式逻辑直观,适合需要统一处理空值的场景。

效果说明

两种方法都能实现:

  • 姓名各部分之间用单个空格分隔
  • 空值字段不会显示"None",也不会留下多余空格

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 22:15:01