Двойные скобки в python
Вот такой код
df = google.history(period='1d', interval="1m") # pandas DataFrame
df = df[['Low']]
df.head()
я правильно понимаю, что предпоследняя строчка равносильно df = df['Low'], только она пересохраняет переменную, а не использует ее как указатель? или ['Low'] и есть ключ в dict и мы пересохраняем в list?
Ответы (2 шт):
Если бы объект 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 будет перезаписан.
df = google.history(period='1d', interval="1m") # pandas DataFrame
# Здесь df получает, скорее всего, датафрейм
df = df[['Low']]
# Здесь df Стирает все что полученно выше и при сваивает один столбик 'Low'
df.head()
