DataFrame拼接字符串列触发TypeError:列表与字符串无法拼接求助
问题分析与解决
你的代码出错核心原因是使用了str.split()把字符串转成了列表,之后试图用+' '+拼接列表和字符串,自然触发类型错误——列表只能和列表拼接,不能直接加字符串。
错误代码的问题点
你执行df_control['NAME'].str.split()后,原字符串(比如"Wilson")会被转为列表["Wilson"],同理LASTNAME列也变成了列表类型。此时执行df_control['NAME']+' '+df_control['LASTNAME'],本质是尝试做["Wilson"] + " " + ["Nunes"],这显然不符合Python的类型规则,所以抛出TypeError。
正确实现方式
如果你的需求是去除字符串中的多余空格(两端或中间)后拼接两列,直接操作字符串即可,不需要转成列表:
# 确保列是字符串类型 df_control['NAME'] = df_control['NAME'].astype(str) df_control['LASTNAME'] = df_control['LASTNAME'].astype(str) # 可选:去除字符串两端的空格 df_control['NAME'] = df_control['NAME'].str.strip() df_control['LASTNAME'] = df_control['LASTNAME'].str.strip() # 可选:如果要把中间多个连续空格替换成单个(比如原数据有多个空格分隔) # df_control['NAME'] = df_control['NAME'].str.split().str.join(' ') # df_control['LASTNAME'] = df_control['LASTNAME'].str.split().str.join(' ') # 直接拼接两列生成全名 df_control['FULL NAME'] = df_control['NAME'] + ' ' + df_control['LASTNAME']
验证结果
用你的示例数据执行后,会得到期望的结果:
| NAME | LASTNAME | FULL NAME | |
|---|---|---|---|
| 1 | Wilson | Nunes | Wilson Nunes |
内容的提问来源于stack exchange,提问作者Zan
相关产品推荐
相关产品推荐

