python dataframe конвертировать число недель в месяц

Я пытаюсь добавить новый столбец, который преобразует столбец недели в соответствующий месяц, в который входит неделя. Если неделя разделить на 2 месяца, то возьмите максимальный месяц в качестве ответа.

import pandas as pd data = {'Week': [201301, 201301, 201302, 201302, 201303], 'product': ['coke', 'fanta', 'coke' ,'sprite' ,'pepsi'], 'quantity': [1.5, 1.7, 3.6, 2.4, 2.9]} df = pd.DataFrame(data) print df Week product quantity 0 201301 coke 1.5 1 201301 fanta 1.7 2 201302 coke 3.6 3 201306 sprite 2.4 4 201307 pepsi 2.9 

поэтому выход будет выглядеть следующим образом. есть идеи?

  Week product quantity MonthMax 0 201301 coke 1.5 01 1 201301 fanta 1.7 01 2 201302 coke 3.6 01 3 201305 sprite 2.4 02 4 201306 pepsi 2.9 02 

хотя неделя 201301 является частью dec12 и jan13, а также неделя 201305 является частью jan13 и feb13. Формат недели, который я использую, кстати, равен yyyyww. Думаю, если бы я мог рассчитать последний день этой недели и, следовательно, месяц. но как я могу сделать это самым простым способом. @alko

Возможным способом является преобразование этого последнего дня недели в дату и время, а затем доступ к этому месяцу:

 df['LastDayWeek'] = pd.to_datetime((df['Week']-1).astype(str) + "6", format="%Y%U%w") 

Минус один, потому что python начинает отсчет в ноль ( http://docs.python.org/2/library/datetime.html#strftime-and-strptime-behavior ), + "6" должен состоять из последнего дня каждого неделю.
Затем вы получаете месяц из этих дней:

 df['MonthMax'] = pd.DatetimeIndex(df['LastDayWeek']).month 

дает:

 In [6]: df Out[6]: Week product quantity LastDayWeek MonthMax 0 201301 coke 1.5 2013-01-05 00:00:00 1 1 201302 fanta 1.7 2013-01-12 00:00:00 1 2 201304 coke 3.6 2013-01-26 00:00:00 1 3 201306 sprite 2.4 2013-02-09 00:00:00 2 4 201308 pepsi 2.9 2013-02-23 00:00:00 2