gpt4 book ai didi

python - 在 Python 中获取每月的假期数

转载 作者:行者123 更新时间:2023-12-05 02:57:42 28 4
gpt4 key购买 nike

世界,您好

我想检索每个月的公共(public)假期数。

这是我的数据集

City       date        value   End_date
BE 01/01/16 41 31/01/16
NW 01/10/16 74 31/10/16
BY 01/05/16 97 31/05/16

通过以下代码,我可以手动知道这一天是否是公共(public)假期:

from datetime import date
import holidays

#prov = BW, BY, BE, BB, HB, HH, HE, MV, NI, NW, RP, SL, SN, ST, SH, TH

us_holidays = holidays.CountryHoliday('DE', prov='NW', state=None )

date(2020, 5, 21) in us_holidays

out:
False

问题:我如何计算每个月的“真实”值数量?如何在数据框中存储“真”值的计数?

预期输出

City       date        value   End_date    Nb_pub_holiday
BE 01/01/16 41 31/01/16 2
NW 01/10/16 74 31/10/16 0
BY 01/05/16 97 31/05/16 4

最佳答案

不知道为什么,但我在使用 date_range 的自定义函数中得到了不同的输出并在生成器中通过 sum 计算匹配值:

#convert columns to datetimes
df['date'] = pd.to_datetime(df['date'], format='%d/%m/%y')
df['End_date'] = pd.to_datetime(df['End_date'], format='%d/%m/%y')

import holidays

def f1(x):
h = holidays.CountryHoliday('DE', prov=x['City'], state=None)
d = pd.date_range(x['date'], x['End_date'])
return sum(y in h for y in d)

df['Nb_pub_holiday'] = df.apply(f1, axis=1)
print (df)
City date value End_date Nb_pub_holiday
0 BE 2016-01-01 41 2016-01-31 1
1 NW 2016-10-01 74 2016-10-31 1
2 BY 2016-05-01 97 2016-05-31 4

对于假期日期列表,可以使用:

def f2(x):
h = holidays.CountryHoliday('DE', prov=x['City'], state=None)
d = pd.date_range(x['date'], x['End_date'])
return [y.date() for y in d if y in h]

df['Lst_pub_holiday'] = df.apply(f2, axis=1)
print (df)
City date value End_date \
0 BE 2016-01-01 41 2016-01-31
1 NW 2016-10-01 74 2016-10-31
2 BY 2016-05-01 97 2016-05-31

Lst_pub_holiday
0 [2016-01-01]
1 [2016-10-03]
2 [2016-05-01, 2016-05-05, 2016-05-16, 2016-05-26]

关于python - 在 Python 中获取每月的假期数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59681579/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com