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

Windows环境下Pandas新增列时出现值与索引长度不匹配报错

Pandas新增列报错:长度不匹配问题解决

问题代码

import pandas as pd
sample_import=pd.read_csv('C:/Users/HP/Desktop/python programing/allpythonfiles/simple_csv.csv')

new_column_values=list(range(1,10))
sample_import['new_column'] = new_column_values[:len(sample_import)]

subset=sample_import.iloc[:5,:3]

print(subset[['col1','col2','col3','new column']])

报错信息

File "C:\Users\HP\AppData\Roaming\Python\Python311\site-packages\pandas\core\frame.py", line 3978, in _setitem_
    self._set_item(key, value)
  File "C:\Users\HP\AppData\Roaming\Python\Python311\site-packages\pandas\core\frame.py", line 4172, in _set_item       
    value = self._sanitize_column(value)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\HP\AppData\Roaming\Python\Python311\site-packages\pandas\core\frame.py", line 4912, in _sanitize_column
    com.require_length_match(value, self.index)
  File "C:\Users\HP\AppData\Roaming\Python\Python311\site-packages\pandas\core\common.py", line 561, in require_length_match    
    raise ValueError(
ValueError: Length of values (9) does not match length of index (29)
PS C:\Users\HP\Desktop\python programing>

错误原因

  • 长度不匹配:new_column_values是range(1,10)生成的9个元素列表,而CSV文件读取后的数据框有29行。你用new_column_values[:len(sample_import)]试图截取到匹配长度,但原列表只有9个元素,截取后还是9个,和29行的索引长度不匹配,导致报错。
  • 列名拼写错误:代码里新增的列是new_column,但最后打印时写的是new column(带空格),这会导致后续找不到目标列的问题。

修复方案

方案1:生成和数据框行数匹配的连续序列

如果需要给新增列填充连续递增的数值,直接根据数据框的行数生成对应长度的序列:

import pandas as pd
sample_import=pd.read_csv('C:/Users/HP/Desktop/python programing/allpythonfiles/simple_csv.csv')

# 根据数据框行数生成对应长度的连续值
new_column_values=list(range(1, len(sample_import)+1))
sample_import['new_column'] = new_column_values

subset=sample_import.iloc[:5,:3]
# 修正列名拼写,和新增列保持一致
print(subset[['col1','col2','col3','new_column']])

方案2:循环复用现有列表值

如果想复用现有列表的内容,循环填充到匹配数据框行数:

import pandas as pd
sample_import=pd.read_csv('C:/Users/HP/Desktop/python programing/allpythonfiles/simple_csv.csv')

new_column_values=list(range(1,10))
# 计算需要重复的次数,确保总长度覆盖数据框行数
repeat_times = len(sample_import) // len(new_column_values) + 1
filled_values = new_column_values * repeat_times
sample_import['new_column'] = filled_values[:len(sample_import)]

subset=sample_import.iloc[:5,:3]
print(subset[['col1','col2','col3','new_column']])

方案3:填充固定值

如果新增列需要统一填充某个固定值,直接赋值即可,Pandas会自动将值广播到所有行:

import pandas as pd
sample_import=pd.read_csv('C:/Users/HP/Desktop/python programing/allpythonfiles/simple_csv.csv')

# 直接赋值固定值,自动适配所有行
sample_import['new_column'] = 0

subset=sample_import.iloc[:5,:3]
print(subset[['col1','col2','col3','new_column']])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 09:04:56