如何在Pandas DataFrame中按指定列名选取两列间的所有列?
解决方案
有几种简洁的方法可以实现这个需求,无需手动列出所有列:
方法1:使用loc直接切片列名
Pandas的loc支持通过列名进行切片,且切片会包含起始和结束列,这是最直观的实现方式:
import pandas as pd df = pd.DataFrame() df['a'] = [1, 2] df['a1'] = [1, 2] df['a2'] = [10, 12] df['a3'] = [1, -2] df['a4'] = [1, 12] df['a5'] = [12, 20] df['a6'] = [11, 3] # 选取a1到a4之间的所有列(包含两端) result = df.loc[:, 'a1':'a4'] print(result)
输出结果:
a1 a2 a3 a4 0 1 10 1 1 1 2 12 -2 12
方法2:通过列索引位置切片
如果需要规避列名字符串排序的干扰,完全依赖DataFrame中列的实际顺序,可以先获取列的索引位置,再用iloc切片:
# 获取列名的索引位置 cols = df.columns start_idx = cols.get_loc('a1') end_idx = cols.get_loc('a4') # iloc切片为左闭右开,因此end_idx需要加1以包含目标结束列 result = df.iloc[:, start_idx:end_idx+1] print(result)
内容的提问来源于stack exchange,提问作者Sadcow
相关产品推荐
相关产品推荐

