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

能否在iloc函数中混用索引位置与切片?实现列重排并保留所有列

在pandas iloc中混合单个索引与切片的实现方法

直接用iloc[:, [1,2,3,27, 4:27]]这种写法行不通——Python列表里不能嵌套切片对象(4:27是切片语法,不是合法的列表元素),运行会直接抛出语法错误。

要实现「混合单个索引+切片重排列列,且包含所有列」的需求,有两种简单的解决方式:

方法1:手动转换切片为索引列表

把切片4:27转换成对应的索引范围列表(注意切片是左闭右开,4:27对应索引4到26),再和单个索引合并:

# 构造目标列索引列表
target_cols = [1, 2, 3, 27] + list(range(4, 27))
# 用iloc选取列
result_df = df.iloc[:, target_cols]

如果你的DataFrame包含索引为0的列,记得把0也加入到target_cols中(比如[0,1,2,3,27] + list(range(4,27))),确保所有列都被包含。

方法2:用numpy简化切片合并

借助numpy.r_可以直接把单个索引和切片合并成索引数组,写法更简洁:

import numpy as np

# 自动将切片转为索引数组并合并
target_cols = np.r_[1, 2, 3, 27, 4:27]
result_df = df.iloc[:, target_cols]

np.r_会自动处理切片到索引列表的转换,省去手动调用range()的步骤。

不管用哪种方法,最终的target_cols都会是一个包含所有需要索引的列表/数组,传给iloc后就能按指定顺序输出所有列。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 09:41:01