Получите Количество рабочих дней в месяце в Python - PullRequest
2 голосов
/ 10 января 2020

Hello world,

Я хотел бы получить для каждого месяца количество рабочих дней.

Вот мой набор данных

City       date        value   End_date
Berlin     01/01/16    41       31/01/16
Munich     01/10/16    74       31/10/16
Dresden    01/05/16    97       31/05/16

С помощью следующего кода я могу вручную узнать количество рабочих дней в месяце:

from datetime import datetime
from workalendar.europe.germany import Germany

start_date = "2020-12-01"
end_date = "2020-12-31"

start_datetime = datetime.strptime(start_date, '%Y-%m-%d')
end_datetime = datetime.strptime(end_date, '%Y-%m-%d')

cal = Germany()

print(cal.get_working_days_delta(start_datetime, end_datetime))

out:
21

Вопрос: Как сохранить значение для каждого месяца и года ( С 2016 по 2022 г.) в рамках фрейма данных?

Ожидаемый результат

City       date        value   End_date    Nb_working_days
Berlin     01/01/16    41       31/01/16        20
Munich     01/10/16    74       31/10/16        20
Dresden    01/05/16    97       31/05/16        20

1 Ответ

2 голосов
/ 10 января 2020

Преобразовать оба столбца в дату и время to_datetime, а затем использовать функцию lambda для DataFrame.apply:

from workalendar.europe.germany import Germany
cal = Germany()

df['date'] = pd.to_datetime(df['date'], format='%d/%m/%y')
df['End_date'] = pd.to_datetime(df['End_date'], format='%d/%m/%y')

f = lambda x: cal.get_working_days_delta(x['date'], x['End_date'])
df['Nb_working_days'] = df.apply(f, axis=1)
print (df)
      City       date  value   End_date  Nb_working_days
0   Berlin 2016-01-01     41 2016-01-31               20
1   Munich 2016-10-01     74 2016-10-31               20
2  Dresden 2016-05-01     97 2016-05-31               20
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...