Двойные скобки в python

Вот такой код

df = google.history(period='1d', interval="1m") # pandas DataFrame
df = df[['Low']]
df.head()

введите сюда описание изображения

я правильно понимаю, что предпоследняя строчка равносильно df = df['Low'], только она пересохраняет переменную, а не использует ее как указатель? или ['Low'] и есть ключ в dict и мы пересохраняем в list?


Ответы (2 шт):

Автор решения: Alexey Trukhanov

Если бы объект df в Вашем коде был словарем (dict), то выражение

df = df[['Low']]

нарушало бы синтаксис и Вы получили бы исключение

TypeError: unhashable type: 'list'

так как интерпретатор бы посчитал, что Вы пытаетесь использовать список ['Low'] как ключ словаря, а изменяемые значения не могут быть ключами словарей.

В Вашем случае речь идет об объектах библиотеки pandas и мы не получим объекты типа dict и list.

В Вашем коде df представляет собой объект библиотеки pandas pandas.Dataframe, поэтому выражение:

df = df[['Low']]

создает объект такого же типа pandas.Dataframe (если быть точным class 'pandas.core.frame.DataFrame'). То есть таблицу с одной колонкой с именем Low.

В то время как выражение

df = df['Low']

создаст объект типа pandas.Series (class 'pandas.core.series.Series'), то есть просто одну колонку.

В обоих случаях изначальный df будет перезаписан.

→ Ссылка
Автор решения: overxffff
df = google.history(period='1d', interval="1m") # pandas DataFrame
# Здесь df  получает, скорее всего, датафрейм


df = df[['Low']]
# Здесь df Стирает все что  полученно выше и при сваивает один столбик 'Low'

df.head()
→ Ссылка