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

拆分日期列时遇ValueError: Columns must be same length as key错误求助

日期列拆分报错:ValueError: Columns must be same length as key

问题场景

执行代码拆分日期列时触发错误:

df[['date1', 'date2', 'date3']] = df['Date'].str.split('/')

错误信息:

ValueError: Columns must be same length as key

已确认单独执行df['Date'].str.split('/')能正常返回每个含3个元素的列表,且日期字符串存在8位(如26/12/05)和10位(如22/05/2022)两种长度。

问题根源

str.split('/') 默认返回的是存储列表的Series对象,而非直接拆分为多列的DataFrame。当你试图将这个Series直接赋值给3个目标列时,Pandas无法自动将列表中的元素映射到对应列,因此抛出长度不匹配的错误——哪怕每个列表的元素数量确实是3个。

解决方法

在str.split方法中添加expand=True参数,强制将拆分结果展开为多列DataFrame,这样就能直接赋值给目标列:

df[['date1', 'date2', 'date3']] = df['Date'].str.split('/', expand=True)

额外校验(可选)

如果仍担心存在异常行,可以先排查拆分后元素长度不一致的记录:

# 新增列记录拆分后的元素数量
df['split_length'] = df['Date'].str.split('/').str.len()
# 筛选出拆分后元素数量不等于3的行
print(df[df['split_length'] != 3])

若输出为空,说明所有行都能正确拆分为3个元素,使用上述方案即可解决问题。

关于日期格式的补充

8位和10位的日期字符串(两位/四位年份)不会影响拆分逻辑,拆分后可后续统一处理年份格式(比如将两位年份转换为四位)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 13:40:33