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

如何对pandas DataFrame切片以获取指定坐标位置的子集数据

Pandas DataFrame按坐标位置切片方法

Pandas 中按整数位置提取DataFrame子集统一使用iloc索引器,语法规则为df.iloc[行切片范围, 列切片范围],切片遵循左闭右开规则,不需要指定列名或索引名,直接传入坐标位置即可。

示例代码

首先给出测试用DataFrame:

import pandas as pd

df = pd.DataFrame([
    [16, 3, 2, 13],
    [5, 10, 11, 8],
    [9, 6, 7, 12],
    [4, 15, 14, 1]            
])

如果需要输出嵌套列表格式的结果,在切片后调用.values.tolist()方法即可。

各区域切片实现

  • 左上角2×2区域
    # 取前2行、前2列
    top_left = df.iloc[:2, :2].values.tolist()
    # 输出:[[16, 3], [5, 10]]
    
  • 右上角2×2区域
    # 取前2行、后2列
    top_right = df.iloc[:2, -2:].values.tolist()
    # 输出:[[2, 13], [11, 8]]
    
  • 左下角2×2区域
    # 取后2行、前2列
    bottom_left = df.iloc[-2:, :2].values.tolist()
    # 输出:[[9, 6], [4, 15]]
    
  • 右下角2×2区域
    # 取后2行、后2列
    bottom_right = df.iloc[-2:, -2:].values.tolist()
    # 输出:[[7, 12], [14, 1]]
    
  • 中间2×2区域
    注:原问题期望的中间2×2输出存在笔误,按给出的测试df实际运行结果如下:
    # 取行索引1~3(共2行)、列索引1~3(共2列)
    center = df.iloc[1:3, 1:3].values.tolist()
    # 输出:[[10, 11], [6, 7]]
    

通用切片公式

如果要从坐标(x, y)(x为起始行位置,y为起始列位置,从0开始计数)提取m行n列的子集,通用写法为:

sub_df = df.iloc[x : x+m, y : y+n]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 17:45:05