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

如何基于行列位置列表筛选Python DataFrame的列特定行范围?

解决方法:按列提取指定行范围后合并

你可以通过遍历每列并提取对应行区间,再将结果拼接成新DataFrame的方式实现需求,df.filter确实不适用这个场景——它主要用于按标签过滤行/列,没法针对每列单独设置行范围。

具体代码实现

先构造你的示例数据:

import pandas as pd

df = pd.DataFrame({
    'Index': [1, 2, 3],
    'Column A': [2, 4, 1],
    'Column B': [8, 9, 7]
}).set_index('Index')

first_position = [1, 2]  # 每列的起始行号(对应原DataFrame的Index值)
last_position = [2, 3]   # 每列的结束行号

然后执行以下代码生成预期结果:

# 遍历每列,提取对应行范围后重置索引,再拼接
result = pd.concat(
    [df.loc[fp:lp][col].reset_index(drop=True) 
     for col, fp, lp in zip(df.columns, first_position, last_position)],
    axis=1
)
# 设置输出的索引为1、2(和预期格式一致)
result.index = range(1, len(result)+1)

代码说明

  • df.loc[fp:lp]:根据行标签(原DataFrame的Index值)提取指定行范围,对应示例中Column A取Index 1-2,Column B取Index 2-3
  • .reset_index(drop=True):重置每列提取后的行索引,确保拼接时各行能对齐(否则Column B的索引会是2、3,和Column A的1、2无法匹配)
  • pd.concat(..., axis=1):把处理后的各列按列方向拼接成新DataFrame

执行后得到的result就是你想要的预期输出。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 14:55:20