Извлечение данных месяца из панд - PullRequest
0 голосов
/ 22 ноября 2018

У меня изначально есть даты в строковом формате.Я хочу извлечь из этих дат месяц как число.

df = pd.DataFrame({'Date':['2011/11/2', '2011/12/20', '2011/8/16']})

Я преобразую их в объект даты-времени панд.

df['Date'] = pd.to_datetime(df['Date'])

Затем я хочу извлечь все месяцы.

Когда я пытаюсь:

df.loc[0]["Date"].month

Это работает, возвращая правильное значение 11.

Но когда я пытаюсь вызвать несколько месяцев, это не работает?

df.loc[1:2]["Date"].month

AttributeError: 'Series' object has no attribute 'month'

Ответы [ 2 ]

0 голосов
/ 22 ноября 2018

df.loc[0]["Date"] возвращает скаляр: pd.Timestamp объекты имеют атрибут month, к которому вы обращаетесь.

df.loc[1:2]["Date"] возвращает серию: pd.Seriesобъекты имеют , а не имеют атрибут month, они делают имеют атрибут dt.month, если df['Date'] представляет собой серию datetime.

Кроме того, не использует цепную индексацию .Вы можете использовать:

df.loc[0, 'Date'].month для скаляра

df.loc[1:2, 'Date'].dt.month для серии

0 голосов
/ 22 ноября 2018

Есть разные функции.pandas.Series.dt.month для преобразования Series заполнено datetimes и pandas.Timestamp для преобразования скаляра.Для преобразования Index есть функция pandas.DatetimeIndex.month, здесь нет .dt.

Так нужно:

#Series
df.loc[1:2, "Date"].dt.month

#scalar
df.loc[0, 'Date'].month

#DatetimeIndex
df.set_index('Date').month
...