Как извлечь неделю epi из даты с помощью python?

#python #date

Вопрос:

Я пытаюсь извлечь epiweek из фрейма данных pandas с помощью библиотеки «epiweeks», но у меня возникли некоторые проблемы с этим.

код mi приведен ниже

 import pandas as pd from epiweeks import Week, Year   a= [('2021-06-11 00:00:00'),  ('2021-06-11 00:00:00'),  ('2021-06-11 00:00:00'),  ('2021-06-11 00:00:00'),  ('2021-06-11 00:00:00'),  ('2021-06-11 00:00:00'),  ('2021-06-18 00:00:00'),  ('2021-06-18 00:00:00'),  ('2021-06-18 00:00:00'),  ('2021-06-18 00:00:00'),  ('2021-06-18 00:00:00'),  ('2021-06-18 00:00:00'),  ('2021-06-18 00:00:00')] b = [25,58,65,45,47,85,96,36,25,14,25,78,75]  fecha = pd.DataFrame(list(zip(a,b)))  fecha[0] = pd.to_datetime(fecha[0])  Week.fromdate(fecha[0])   

с помощью этого кода я получаю: Ошибка атрибута: объект «Серия» не имеет атрибута «год»

можете ли вы помочь мне найти мою ошибку

Вы знаете другой способ сделать это?

Спасибо!

Ответ №1:

Полегче!

Единственное, что вы делаете неправильно, — это передаете все Series это fromdate :

 Week.fromdate(fecha[0])  

Это не сработает, потому Week.fromdate что ожидает a datetime или a pandas.Timestamp . Но вы можете вызвать fecha[0].apply серию, которая принимает функцию, и вызывает эту функцию для каждого элемента в серии, и добавляет значение, возвращаемое функцией, в новую серию, а затем возвращает эту серию. Затем вы можете добавить эту серию в фрейм данных следующим образом:

 fecha['week'] = fecha[0].apply(Week.fromdate)  

Или, если вы хотите передать некоторые пользовательские параметры в Week.fromdate :

 fecha['week'] = fecha[0].apply(lambda x: Week.fromdate(x, ...))  

Попробовать это:

 gt;gt;gt; fecha  0 1 week 0 2021-06-11 25 202123 1 2021-06-11 58 202123 2 2021-06-11 65 202123 3 2021-06-11 45 202123 4 2021-06-11 47 202123 5 2021-06-11 85 202123 6 2021-06-18 96 202124 7 2021-06-18 36 202124 8 2021-06-18 25 202124 9 2021-06-18 14 202124 10 2021-06-18 25 202124 11 2021-06-18 78 202124 12 2021-06-18 75 202124  gt;gt;gt; fecha['week'][0] Week(2021, 23, CDC)  gt;gt;gt; fecha['week'][12] Week(2021, 24, CDC)  

Комментарии:

1. Отлично! это было легко. Спасибо большое за помощь мне.