Создание нового столбца на основе функции календаря - PullRequest
0 голосов
/ 11 ноября 2018

У меня есть фрейм данных :

    Year     Month    Week_of_month Day_of_week 
0     2018      1         2             1         
1     2018      1         1             2         
2     2018      1         2             2          
3     2018      1         1             3          
4     2018      1         2             3          
5     2018      1         1             4          
6     2018      1         2             4          
7     2018      1         1             5         
8     2018      1         2             5         
9     2018      1         1             6          
10    2018      1         2             6       
11    2018      1         1             7     

Который содержит:

  • День недели (с 1 по 7 -> с воскресенья по субботу)

  • Неделя месяца (от 1 до 6 - в одном месяце максимум 6 недель)

Я бы хотел получить соответствующий день на основе этих 4 данных:

Так, например, чтобы получить 30th of december of 2018, я сделал это:

image

Я использовал эту функцию :

calendar.setfirstweekday(calendar.SUNDAY)
calendar.monthcalendar(2018,12)

    [[0, 0, 0, 0, 0, 0, 1],
     [2, 3, 4, 5, 6, 7, 8],
     [9, 10, 11, 12, 13, 14, 15],
     [16, 17, 18, 19, 20, 21, 22],
     [23, 24, 25, 26, 27, 28, 29],
     [30, 31, 0, 0, 0, 0, 0]]

calendar.monthcalendar(2018,12)[5][1]
31

Дело в том: Как я могу использовать эту функцию, чтобы получать каждый день в каждом ряду моего кадра данных ?.

Я пробовал это:

df['Day'] = calendar.monthcalendar(df.Year, df.Month)[df.Week_of_month][df.Day_of_week]

Однако я получил ошибку :

TypeError: '>=' not supported between instances of 'str' and 'int'

1 Ответ

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

Вот, пожалуйста:

df['Day'] = df.apply(lambda x: calendar.monthcalendar(x.Year, x.Month)[x.Week_of_month-1][x.Day_of_week-1], axis=1)

Выход:

enter image description here

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...