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

Pandas拆分单列到多列时因静态键分配触发ValueError问题求助

Pandas拆分列报错ValueError的解决方法

问题原因

你硬指定了5列来接收拆分结果,但原数据里不同行的amazon_category_and_sub_category字段拆分后列数不一样——有的拆成3列,有的4列,还有NaN行拆出来是空,导致列数不匹配,触发ValueError: Columns must be the same length as key。

两种解决办法

办法1:自动适配列数(推荐)

先拆分出完整的结果,再根据实际列数自动命名,不会出现列数不匹配的问题:

# 拆分字段,自动扩展成DataFrame,不足的列自动补NaN
split_result = df['amazon_category_and_sub_category'].str.split('>', expand=True)

# 给拆分后的列起名字:第一列叫Category,后面依次是Sub_Category_1、Sub_Category_2...
split_result.columns = ['Category'] + [f'Sub_Category_{i}' for i in range(1, split_result.shape[1])]

# 把拆分后的列合并回原数据集
df = pd.concat([df, split_result], axis=1)

办法2:固定列数补空值

如果非要用你指定的5列,可以限制拆分次数,让所有行都拆成最多5列,不足的补NaN:

# 拆分时限制最多拆4次(这样最多得到5列),自动补NaN
split_result = df['amazon_category_and_sub_category'].str.split('>', expand=True, n=4)

# 重命名成你要的列名
split_result.columns = ['Category', 'Sub_Category_1','Sub_Category_2','Sub_Category_3','Sub_Category_4']

# 赋值回原数据集
df[split_result.columns] = split_result

额外优化:清理空格

拆分后的内容可能带前后空格(比如' Hobbies'),可以统一去掉:

split_result = split_result.apply(lambda col: col.str.strip() if col.dtype == 'object' else col)

内容的提问来源于stack exchange,提问作者A l w a y s S u n n y

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 05:05:56