【问题标题】:Python pandas dataseries slice with label vs index discrepancy带有标签与索引差异的 Python pandas 数据系列切片
【发布时间】:2021-12-29 19:36:49
【问题描述】:
s2 = pd.Series([10,20,30,40,50,60], index=['a', 'b', 'c', 'd', 'e', 'f'])

当我使用如下标签选择切片时

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

输出是

b    23
c    33
d    43
e    54
dtype: int64

但是当我使用下面的索引选择切片时

print(s2[1:4])

输出是

b    23
c    33
d    43
dtype: int64

为什么当我们用索引选择时,它是用 step-1 选择的,而用标签它也是选择最终标签?

【问题讨论】:

    标签: python pandas indexing slice


    【解决方案1】:
    s2['b':'e']
    

    这类似于df.loc[]

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

    s2[1:4]

    这与df.iloc[] 类似

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

    【讨论】:

      【解决方案2】:

      来自documentation:“带有标签的切片对象 'a':'f'(请注意,与通常的 Python 切片相反,开始和结束都包含在索引中!请参阅带标签的切片和端点包括在内。)”

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

      【讨论】:

      • 谢谢,正在看熊猫的视频教程。谷歌搜索没有找到熊猫文档。标记为答案
      猜你喜欢
      • 2018-11-21
      • 2015-03-16
      • 1970-01-01
      • 2017-01-17
      • 2019-07-22
      • 2018-08-20
      • 1970-01-01
      • 2021-12-02
      • 1970-01-01
      相关资源
      最近更新 更多