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

如何结合列表与范围选择Pandas DataFrame的指定列?

解决Pandas iloc索引时的ValueError问题

嗨,这个报错我之前也碰到过!问题出在你给iloc的列索引里混合了单个整数和数组——np.arange(5,8)返回的是一个数组array([5,6,7]),和[0,3]放在一起就变成了嵌套结构,iloc没法识别这种嵌套的序列,所以抛出了ValueError。

下面给你几种可行的解决办法:

方法1:把数组转成列表后合并

最直观的方式就是把np.arange的结果转成普通列表,再和前面的索引合并成一个扁平列表:

import pandas as pd
import numpy as np

df = pd.DataFrame({'a':[1,2], 'b':[1,2], 'c':[1,2], 'd':[1,2], 'e':[1,2], 'f':[1,2], 'g':[1,2], 'h':[1,2]})
# 合并索引列表
selected_cols = [0, 3] + list(np.arange(5, 8))
result = df.iloc[:, selected_cols]
print(result)

执行后会得到你想要的结果:

a d e f g
0 1 1 1 1 1
1 2 2 2 2 2

方法2:用numpy拼接生成扁平数组

如果习惯用numpy操作,可以用np.concatenate把两个索引序列拼成一个扁平数组,iloc同样支持numpy数组作为索引:

selected_cols = np.concatenate([[0, 3], np.arange(5, 8)])
result = df.iloc[:, selected_cols]

方法3:直接手动写出所有索引(适合列数少的场景)

如果你的目标索引不多,直接把所有列索引列出来反而更清晰,完全不用借助np.arange:

result = df.iloc[:, [0, 3, 5, 6, 7]]

核心要点就是:给iloc传递的索引必须是扁平的序列(列表或numpy数组都可以),不能嵌套数组或列表结构哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:27:22