Python pandas 带有标签与索引差异的数据系列切片

Python pandas dataseries slice with label vs index discrepancy

s2 = pd.Series([10,20,30,40,50,60], index=['a', 'b', 'c', 'd', 'e', 'f'])

当我 select 使用如下标签切片时

print(s2['b':'e'])

输出是

b    23
c    33
d    43
e    54
dtype: int64

但是当我 select 使用索引切片时

print(s2[1:4])

输出是

b    23
c    33
d    43
dtype: int64

为什么当我们 select 使用索引时,它 select 使用步骤 1 而使用标签 select 使用最终标签?

s2['b':'e']

这类似于 df.loc[]

这里是一个带有标签 'a':'f' 的切片对象(请注意,与通常的 Python 切片相反,当出现在索引中时,开始和结束都包括在内!请参阅带标签的切片和包含端点。)

其中 s2[1:4]

这与 df.iloc[]

的工作方式类似

此处适用 python 的一般切片规则。 参考这个 link https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html

来自 documentation: "A slice object with labels 'a':'f' (请注意,与通常的 Python 切片相反,开始和结束都是包含,当出现在索引中时!请参阅带标签的切片和包含端点。)“

当您的索引不是默认值 RangeIndex(例如示例中的字符串)时,切片包括开始和停止。对于 RangeIndex(或指定索引时)切片包括 startstop-1.