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

使用str.split()动态为DataFrame添加列时遇ValueError的解决方法

解决方法

报错原因确实是你指定的目标列数和拆分后实际生成的列数不匹配——有的姓名拆分后只有1段,有的3段,硬要塞进4列自然会报错。要动态适配拆分后的列数,按以下步骤来:

  1. 先执行拆分,直接得到包含所有拆分结果的DataFrame:
split_names = df['Contact Person'].str.split(' ', expand=True)

这一步会自动根据最长的姓名拆分结果生成对应数量的列,比如你的示例数据里最长姓名拆成3段,split_names就会有3列。

  1. 给拆分后的列批量重命名成你需要的格式:
split_names.columns = [f'Name Part {i+1}' for i in split_names.columns]

用循环动态生成列名,不管拆分出几列,都会自动对应成「Name Part One」「Name Part Two」这类格式。

  1. 把拆分后的列合并回原DataFrame:
df = pd.concat([df, split_names], axis=1)

完整示例代码

import pandas as pd

# 构造示例数据
data = {'Contact Person': ['Andrew Jones', 'James', 'Hugh Peter Michael']}
df = pd.DataFrame(data)

# 拆分姓名并适配列数
split_names = df['Contact Person'].str.split(' ', expand=True)
split_names.columns = [f'Name Part {i+1}' for i in split_names.columns]
df = pd.concat([df, split_names], axis=1)

print(df)

运行后输出结果:

Contact Person Name Part One Name Part Two Name Part Three
0        Andrew Jones        Andrew          Jones             NaN
1               James         James           NaN             NaN
2  Hugh Peter Michael          Hugh         Peter         Michael

后续如果有更长的姓名(比如4段),代码会自动生成第4列,完全适配拆分后的最大段数,不用手动修改列名数量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 13:42:10