Основная цель оператора индексации DataFrame []
- выбор столбцов.
Когда оператору индексирования передается строка или целое число, он пытается найти столбец с этим конкретным именем и вернуть его как ряд.
Итак, в вопросе выше: df[2]
ищет имя столбца, совпадающее с целочисленным значением 2
. Этот столбец не существует, и KeyError
он поднимается.
Оператор индексации DataFrame полностью меняет поведение для выбора строк при использовании обозначения среза
Как ни странно, если задан фрагмент, оператор индексации DataFrame выбирает строки и может делать это по целому расположению или по метке индекса.
df[2:3]
Это будет срез, начиная со строки с целочисленным местоположением от 2 до 3, исключая последний элемент. Итак, всего один ряд. Следующее выбирает строки, начинающиеся с целочисленного местоположения 6 до, но не включая 20 каждой третьей строкой.
df[6:20:3]
Вы также можете использовать фрагменты, состоящие из строковых меток, если в вашем индексе DataFrame есть строки. Для получения дополнительной информации см. Это решение на .iloc против .loc .
Я почти никогда не использую эту запись слайса с оператором индексации, так как он не является явным и почти никогда не используется. При нарезке по строкам придерживайтесь .loc/.iloc
.
df.ix[2]
не работает - по крайней мере, не вpandas version '0.19.2'