Pandas拆分列报错ValueError:列长度需与键一致
解决DataFrame拆分Observed_Property字段时的ValueError问题
报错原因
你执行拆分代码时触发的ValueError: 列数必须与键的长度一致,是因为部分Observed_Property值包含多个连字符('-'),使用默认的str.split('-', expand=True)会将这些值拆分成超过2列的结果,但你只指定了["pcode","pname"]两个列名,导致列数不匹配。
解决方案
方案1:仅拆分第一个连字符(推荐)
如果你的需求是提取第一个'-'前的编码(如39398)和后面的属性名称,只需限制拆分次数为1次,确保只会生成2列:
# 仅拆分第一个'-',生成2列 df[["pcode","pname"]] = df["Observed_Property"].str.split('-', n=1, expand=True) # 清理字段前后的空格(可选但推荐) df["pcode"] = df["pcode"].str.strip() df["pname"] = df["pname"].str.strip()
方案2:先排查异常值
如果怀疑存在没有'-'或者有多个'-'的异常数据,可以先定位并处理这些行:
# 找出Observed_Property中'-'数量不等于1的行 invalid_rows = df[df["Observed_Property"].str.count('-') != 1] print("异常行:") print(invalid_rows) # 根据实际业务逻辑修正这些异常值后,再执行拆分操作
内容的提问来源于stack exchange,提问作者Mr. Geologist
相关产品推荐
相关产品推荐

