如何在Pandas中筛选列?同时包含第二列与10至40列的方法
解决方法
嘿,这个问题其实很容易搞定!首先得明确一下:pandas里的iloc是从0开始计数的索引,所以你说的「第二列」对应的索引是1,而你用的10:40切片其实会取到索引10到39的列(因为切片是左闭右开的规则),刚好对应你要的第10至40列。
这里有两种最简单的实现方式:
方法1:纯Python列表拼接(无需额外库)
直接把单列索引和切片转成的列表拼在一起就行:
subset = dt.iloc[:, [1] + list(range(10, 40))]
[1]就是你要的第二列的索引list(range(10, 40))把10:40的切片转换成包含10到39的索引列表- 用
+把两个列表合并,就得到了所有需要的列索引集合
方法2:用numpy简化写法(更紧凑)
如果你已经在项目里用了numpy,那可以用np.r_来直接拼接单个索引和切片,省去转列表的步骤:
import numpy as np subset = dt.iloc[:, np.r_[1, 10:40]]
np.r_会自动帮你把单个元素和切片合并成连续的索引数组,写法更简洁。
两种方法都能完美实现你的需求,选哪个全看你自己的习惯啦~
内容的提问来源于stack exchange,提问作者Jeff
相关产品推荐
相关产品推荐

