Вопрос новичка: почему эта индексация работает?

Я пытаюсь извлечь только записи о длине лепестка verisicolor в наборе данных радужной оболочки. Это соответствует строкам от 50 до 99. Мне всегда говорили, что индексация python исключает окончательную запись, т.е. 1:10 - это все числа от 1 до 9.

Итак, почему следующая команда включает строку 99? Является ли эта инклюзивная индексация (где включено конечное значение) просто пандой с loc? Мой код ниже, и он работает, но я не знаю почему, моя интуиция состояла бы в том, чтобы установить индекс в loc [50:100]

from sklearn import datasets
import pandas as pd
import numpy as np
iris = datasets.load_iris() #load iris
iris_df=pd.DataFrame(data= np.c_[iris['data'], iris['target']],
                     columns= iris['feature_names'] + ['target']) #convert iris to dataframe
versicolor_petal_length=iris_df.loc[50:99,['petal length (cm)']] #extract rows 50-99 of petal length (cm) column
print(versicolor_petal_length)

Выход включает строку 99,

    petal length (cm)
50                4.7
51                4.5
52                4.9
53                4.0
54                4.6
55                4.5
56                4.7
57                3.3
58                4.6
59                3.9
60                3.5
61                4.2
62                4.0
63                4.7
64                3.6
65                4.4
66                4.5
67                4.1
68                4.5
69                3.9
70                4.8
71                4.0
72                4.9
73                4.7
74                4.3
75                4.4
76                4.8
77                5.0
78                4.5
79                3.5
80                3.8
81                3.7
82                3.9
83                5.1
84                4.5
85                4.5
86                4.7
87                4.4
88                4.1
89                4.0
90                4.4
91                4.6
92                4.0
93                3.3
94                4.2
95                4.2
96                4.2
97                4.3
98                3.0
99                4.1

Учитывая это, может ли кто-нибудь объяснить мне, когда индексирование будет включать последний элемент, а когда индексирование исключит его? У меня возникли некоторые проблемы с этим.

Благодарность

Всего 2 ответа


Я полагаю, что вы думаете о np.arange, который принадлежит библиотеке Numpy (исключая последний индекс, как показано здесь ), тогда как df.loc из библиотеки Pandas и все включено по индексации, как видно из примеров здесь

РЕДАКТИРОВАТЬ, чтобы добавить: вы также можете подумать о том, как циклы работают в Python относительно функциональности диапазона. Когда дело доходит до индексации и игры с новыми библиотеками, никогда не повредит дважды проверить некоторую документацию :)

если у вас есть какие-либо дополнительные вопросы, не стесняйтесь спрашивать


Здесь вы испытываете свойство DataFrame.loc[] .

Как упомянуто в документации как предупреждение, и я цитирую: Предупреждение: обратите внимание, что в отличие от обычных кусочков питона, как начало, так и остановка включены

Вот ссылка с примером из документов панд: https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.loc.html.