You need to enable JavaScript to run this app. Pandas使用.iloc按列号读取列触发IndexError报错的解决方法
优惠活动
大模型
产品
解决方案
定价
更多

Pandas使用.iloc按列号读取列触发IndexError报错的解决方法

报错原因

你读取到的s是完整的逗号分隔字符串(示例值为"1,3,2"),直接放入列表后得到的是仅包含单个字符串元素的列表["1,3,2"],不符合iloc要求的整数型索引序列格式,因此触发类型报错。

解决方法

仅需要对读取到的字符串做「拆分→转整数」处理即可,修改后的代码如下:

import pandas as pd 
import numpy as np

df = pd.read_csv('sample1.csv')

with open('param.txt') as f:
  s = f.read()
# 新增:将字符串处理为整数索引列表
col_index = [int(num.strip()) for num in s.strip().split(',')]
# 注意:如果param.txt的列编号是从1开始计数,需要每个值减1,改成下面这行即可
# col_index = [int(num.strip())-1 for num in s.strip().split(',')]
b = df.iloc[:, col_index] 
print(b.to_string(index=False))

处理逻辑说明

  • s.strip():去除读取内容首尾的换行、空格等多余空白字符,避免格式干扰
  • split(','):按逗号将完整字符串切分为单个编号的字符串列表,如"1,3,2"会被切分为["1", "3", "2"]
  • int(num.strip()):将每个字符串类型的编号转换为整数,同时处理编号之间可能存在的空格,适配param.txt可能存在的不规范格式(如1, 3, 2带空格的情况)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 04:36:05