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

Python Pandas索引疑问:位置索引与显式索引切片结果行数不同

Pandas索引切片的差异解析

在Pandas里,位置索引切片和显式标签切片的行为规则存在差异,这就是你看到结果行数不同的核心原因:

1. 位置索引切片的行为

当使用数字位置进行切片时(比如data[1:3]),遵循左闭右开的规则:

  • 包含起始位置(索引1)对应的元素
  • 不包含结束位置(索引3)对应的元素

对应示例:

data[1:3]
# 输出:
# 1    0.50
# 2    0.75
# dtype: float64

最终得到索引1、2对应的2行数据。

2. 显式标签索引切片的行为

当使用自定义标签进行切片时(比如data['b':'d']),遵循左闭右闭的规则:

  • 同时包含起始标签('b')和结束标签('d')对应的元素

对应示例:

data = pd.Series([0.25, 0.5, 0.75, 1.0], index=['a', 'b', 'c', 'd'])
data['b':'d']
# 输出:
# b    0.50
# c    0.75
# d    1.00
# dtype: float64

最终得到'b'、'c'、'd'对应的3行数据。

关于loc和iloc的补充

  • iloc是专门用于位置索引的方法,data.iloc[1:3]和data[1:3]行为完全一致,都是左闭右开。
  • loc是专门用于标签索引的方法,data.loc['b':'d']和data['b':'d']行为完全一致,都是左闭右闭。

这种设计是因为标签通常是无规律的字符串或非连续数字,左闭右闭的规则更符合“取从X到Y所有元素”的直观需求;而位置索引是连续数字,遵循编程领域常见的左闭右开切片逻辑(比如Python原生列表的切片)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 20:18:13