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(或指定索引时)切片包括 start
到 stop-1
.
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(或指定索引时)切片包括 start
到 stop-1
.