从Python Pandas中检索基于索引的数据

56lgkhnf  于 2023-06-20  发布在  Python
关注(0)|答案(2)|浏览(116)
data[1:3]
1    0.50
2    0.75
dtype: float64

在这里,我得到了两排。
2.

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

为什么,在显式索引中,我得到三行?
我正在通过LOC和ILOC,但不理解。

wj8zmpe1

wj8zmpe11#

使用不同的索引方法时得到不同行数的原因是它们处理切片的方式不同。
当您使用data[1:3]时,它引用位置索引(如iloc)而不是标签。因此,它选择位置1和2(不包括3)的元素,得到两行。
另一方面,当您使用data['b':'d']时,它的行为类似于loc,它考虑标签本身。它包括从标签'b'到标签'd '的元素,导致三行。

41zrol4v

41zrol4v2#

Pandas数字索引模仿python索引:[i:j]返回索引i到j-1,就像iloc[]一样。如果索引是字符,则不能减去字符以获得上一个字符。考虑以下索引:

data  = pd.Series([0.25, 0.5, 0.75, 1.0, 2.0],
index = ['a', 'z', 'r', 'q', 'q'])
data['a':'q']

它应该停在'r'还是'q'?最合乎逻辑的解决方案是假设您试图像.loc[]那样访问它。因此,data['start':'end']的行为类似于.loc[]data[i:j]的行为类似于.iloc[]

相关问题