:-1
представляет диапазон 1 , а -1
- скаляр.Диапазоны являются 1-мерными, а скаляры - 0-мерными.Подумайте о линии против точки;диапазон - это линия, а скаляр - это точка.Это отражено в том, как Pandas преобразует диапазон против скаляра при индексации.
Следовательно, следующие данные эквивалентны для кадра данных с 2 столбцами:
df = pd.DataFrame(np.random.random((5, 2)))
df.iloc[:, :-1].shape # (5, 1)
df.iloc[:, [0]].shape # (5, 1)
Использование скаляра удалит дополнительное измерение,Вы можете сделать это несколькими способами:
df.iloc[:, 0].shape # (5,)
df.iloc[:, -2].shape # (5,)
Фактически, :-1
является синтаксическим сахаром для объекта slice
: slice(0, -1)
.На практике более простой синтаксис предпочтителен, если вам не нужно передавать slice
объекты вокруг.