如何为CSV及Pandas DataFrame指定前11列的表头?
问题分析与解决
你的代码存在两个关键错误:
- 切片范围错误:
df.iloc[:, 1:11]选取的是第2列到第11列(共10列),而你需要的是前11列,正确的切片应该是df.iloc[:, 0:11](从第0列到第10列,共11列)。 - 列名列表语法错误:
['A', 'B', 'C', 'D', 'E', 'F' 'G', 'H', 'I', 'J', 'K']里的'F'和'G'之间缺少逗号,Python会自动把这两个字符串拼接成'FG',导致列名列表实际只有10个元素,和后续的列数不匹配,进而引发数据异常。
修正后的代码:
import pandas as pd df = pd.read_csv("info/info.data", sep=',', header=None) # 选取前11列(索引0到10) df_11 = df.iloc[:, 0:11] # 补全列名列表中的逗号 df_11.columns = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K']
如果你想在读取CSV时直接指定前11列的表头,也可以用更简洁的写法:
import pandas as pd # 定义前11列的表头,剩余列用默认命名 headers = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K'] + [f'col_{i}' for i in range(11, 50)] df = pd.read_csv("info/info.data", sep=',', names=headers) # 单独提取前11列 df_11 = df.iloc[:, 0:11]
内容的提问来源于stack exchange,提问作者danial
相关产品推荐
相关产品推荐

