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

使用Pandas合并三列字符串为Address列失败,求解决方案

解决DataFrame多列字符串拼接为单列的问题

以下是几种可靠的方法,帮你把三列字符串拼接成符合要求的Address列:

方法1:直接字符串拼接(直观易用)

假设你的三列分别是Street、City、Postcode,直接用加号拼接并添加空格分隔:

df['Address'] = df['Street'] + ' ' + df['City'] + ' ' + df['Postcode']

如果列中存在空值(NaN),拼接结果会变成NaN,此时可以先用fillna('')替换空值:

df['Address'] = df['Street'].fillna('') + ' ' + df['City'].fillna('') + ' ' + df['Postcode'].fillna('')

方法2:使用str.cat方法(安全处理空值)

str.cat是Pandas专门用于字符串拼接的方法,支持多列拼接,还能统一处理空值:

df['Address'] = df['Street'].str.cat([df['City'], df['Postcode']], sep=' ', na_rep='')

该方法会自动将空值替换为空字符串,避免拼接结果出现NaN。

方法3:apply逐行处理(灵活自定义逻辑)

如果需要过滤空值或空字符串,避免出现连续空格,可以用apply自定义拼接逻辑:

import pandas as pd

def combine_address(row):
    # 收集非空且非空白的字段
    valid_parts = [part for part in [row['Street'], row['City'], row['Postcode']] 
                   if pd.notna(part) and str(part).strip() != '']
    return ' '.join(valid_parts)

df['Address'] = df.apply(combine_address, axis=1)

关键注意事项

确保参与拼接的三列都是字符串类型(object或string dtype),如果是数值类型(比如邮编被存为数字),先转换为字符串:

df[['Street', 'City', 'Postcode']] = df[['Street', 'City', 'Postcode']].astype(str)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 19:55:57