Преобразование числа pandas даты в неделю

Я хотел бы извлечь номер недели из данных в фреймворке pandas.

Формат даты - datetime64 [ns]

Я нормализовал дату, чтобы удалить из нее время

df['Date'] = df['Date'].apply(pd.datetools.normalize_date)

поэтому теперь дата выглядит примерно так: 2015-06-17 в столбце фрейма данных

и теперь мне нравится конвертировать это число в неделю.

Заранее спасибо

Ответ 1

Просто войдите в dt атрибут недели:

In [286]:
df['Date'].dt.week

Out[286]:
0    25
dtype: int64

In [287]:
df['Week_Number'] = df['Date'].dt.week
df

Out[287]:
        Date  Week_Number
0 2015-06-17           25

Ответ 2

Вот еще одна возможность использования strftime. strftime.org - хороший ресурс.

df['Week_Number'] = df['Date'].dt.strftime('%U')

'%U' представляет номер недели в году (воскресенье - первый день недели) в виде десятичного числа с добавлением нуля. Все дни в новом году, предшествующем первому воскресенью, считаются на неделе 0.

Если у вас есть даты из нескольких лет, я рекомендую создать комбинацию год-неделя

df['Year-Week'] = df['Date'].dt.strftime('%Y-%U')

Ответ 3

Pandas имеет свои функции .dayofyear и .weekofyear, которые могут быть применены сразу к выводу pandas.to_datetime(df['column_name']), давая тип "Timestamp" в качестве вывода.

import pandas as pd
df['formatted_date'] = pd.to_datetime(df['datetime'])
df['day_of_year'] = df.formatted_date.apply(lambda x: x.dayofyear)
df['week_of_year'] = df.formatted_date.apply(lambda x: x.weekofyear)

Ответ 4

from datetime import date
df_date = pd.DataFrame([date.today()],columns  = ['today'])
print(df_date)
#### Print Output ####
#        today
#0  2019-09-07
df_date['weeknum'] = df_date.today.apply(lambda x:x.isocalendar()[1])
print(df_date)
#### Print Output ####
#        today  weeknum
#0  2019-09-07       36