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,但不理解。
wj8zmpe11#
使用不同的索引方法时得到不同行数的原因是它们处理切片的方式不同。当您使用data[1:3]时,它引用位置索引(如iloc)而不是标签。因此,它选择位置1和2(不包括3)的元素,得到两行。另一方面,当您使用data['b':'d']时,它的行为类似于loc,它考虑标签本身。它包括从标签'b'到标签'd '的元素,导致三行。
data[1:3]
data['b':'d']
41zrol4v2#
Pandas数字索引模仿python索引:[i:j]返回索引i到j-1,就像iloc[]一样。如果索引是字符,则不能减去字符以获得上一个字符。考虑以下索引:
[i:j]
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[]。
.loc[]
data['start':'end']
data[i:j]
.iloc[]
2条答案
按热度按时间wj8zmpe11#
使用不同的索引方法时得到不同行数的原因是它们处理切片的方式不同。
当您使用
data[1:3]
时,它引用位置索引(如iloc)而不是标签。因此,它选择位置1和2(不包括3)的元素,得到两行。另一方面,当您使用
data['b':'d']
时,它的行为类似于loc,它考虑标签本身。它包括从标签'b'到标签'd '的元素,导致三行。41zrol4v2#
Pandas数字索引模仿python索引:
[i:j]
返回索引i到j-1,就像iloc[]
一样。如果索引是字符,则不能减去字符以获得上一个字符。考虑以下索引:它应该停在'r'还是'q'?最合乎逻辑的解决方案是假设您试图像
.loc[]
那样访问它。因此,data['start':'end']
的行为类似于.loc[]
,data[i:j]
的行为类似于.iloc[]
。