Основною метою оператора індексації DataFrame []
є вибір стовпців.
Коли оператору індексації передано рядок або ціле число, він намагається знайти стовпець з цим конкретним іменем і повернути його у вигляді Series.
Отже, у питанні вище: df[2]
шукає ім’я стовпця, що відповідає цілому значенню 2
. Цього стовпця не існує і KeyError
піднімається a .
Оператор індексації DataFrame повністю змінює поведінку для вибору рядків, коли використовується позначення зрізів
Як не дивно, коли дається фрагмент, оператор індексації DataFrame вибирає рядки і може робити це за допомогою цілого розташування або мітки індексу.
df[2:3]
Це буде фрагмент, починаючи з рядка з цілим розташуванням від 2 до 3, за винятком останнього елемента. Отже, лише один ряд. Далі вибираються рядки, що починаються з цілого розташування 6, але не включають 20 у кожному третьому ряду.
df[6:20:3]
Ви також можете використовувати фрагменти, що складаються з міток рядків, якщо ваш індекс DataFrame містить рядки в ньому. Детальніше дивіться це рішення на .iloc vs .loc .
Я майже ніколи не використовую це позначення фрагмента разом з оператором індексування, оскільки його явне і майже ніколи не використовується. При нарізанні рядами дотримуйтесь .loc/.iloc
.
df.ix[2]
не працює - принаймні не вpandas version '0.19.2'