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

如何在Pandas中拆分文本列且避免‘Columns must be same length as key’错误?

解决拆分DataFrame列时的ValueError错误

问题描述

尝试将DataFrame的Score列以“-”为分隔符拆分为Home_Score和Away_Score两列,运行以下代码时收到ValueError: Columns must be same length as key错误:

epl_results_2015_22[['Home_Score','Away_Score']] = epl_results_2015_22.Score.str.split("-", expand=True)

涉及的DataFrameepl_results_2015_22数据类型如下:

Wk              float64
Day              object
Date     datetime64[ns]
Time             object
Home             object
Score            object
Away             object
dtype: object

DataFrame前几行数据示例:

WkDayDateTimeHomeScoreAway
01.0Fri2021-08-1320:00 (15:00)Brentford2–0
11.0Sat2021-08-1412:30 (07:30)Manchester Utd5–1
21.0Sat2021-08-1415:00 (10:00)Leicester City1–0
31.0Sat2021-08-1415:00 (10:00)Burnley1–2
41.0Sat2021-08-1415:00 (10:00)Chelsea3–0

问题原因

观察数据中的Score列可以发现,分隔符并非英文减号-,而是中文破折号–(英文减号是短横线,中文破折号长度更长)。用英文减号拆分时无法匹配到分隔符,导致拆分后仅生成1列,但代码试图赋值给2列,因此触发ValueError。

解决方案

将拆分时的分隔符替换为中文破折号–即可:

epl_results_2015_22[['Home_Score','Away_Score']] = epl_results_2015_22.Score.str.split("–", expand=True)

如果担心数据中同时存在两种分隔符,可以用正则表达式匹配两种符号:

epl_results_2015_22[['Home_Score','Away_Score']] = epl_results_2015_22.Score.str.split(r"[-–]", expand=True)

拆分完成后,建议将新列转换为数值类型,方便后续分析:

epl_results_2015_22[['Home_Score','Away_Score']] = epl_results_2015_22[['Home_Score','Away_Score']].astype(int)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 12:48:21