我有一个包含日期的数据框,如下表所示。第一个块是它应该的样子,第二个块是我在添加 BDays 时得到的。这是完成后的样子的示例。我想使用第一列并向日期添加 5 个工作日,但如果 5 个生日与假期重叠(例如 21 年 2 月 15 日),那么我需要再添加一天。使用 添加 5Bday 相当简单 pandas.tseries.offsets import BDay,但我在使用数据框时不能跳过假期。
我尝试过使用pandas.tseries.holiday import USFederalHolidayCalendar、workdays 和 workalendar 模块,但无法弄清楚。任何人都知道我能做什么。
正确的例子
| 日期 | 退出日期+5 |
|---|---|
| 2021/02/09 | 2021/02/17 |
| 2021/02/10 | 2021/02/18 |
错误的例子
| 日期 | 退出日期+5 |
|---|---|
| 2021/02/09 | 2021/02/16 |
| 2021/02/10 | 2021/02/17 |
以下是我尝试过的一些代码示例:
import pandas as pd
from workdays import workday
...
df['DATE'] = workday(df['EXIT DATE +5'], days=5, holidays=holidays)
Run Code Online (Sandbox Code Playgroud)
下一个例子:
import pandas as pd
from pandas.tseries.holiday import USFederalHolidayCalendar
bday_us = pd.offsets.CustomBusinessDay(calendar=USFederalHolidayCalendar())
dt = df['DATE']
df['EXIT DATE +5'] = dt + …Run Code Online (Sandbox Code Playgroud) 我对 Python 还很陌生。我正在利用 Python 的假期套餐,该套餐按国家/地区划分公共假期。为了获得一个国家/地区的假期,您可以运行以下命令:
sorted(holidays.US(years=np.arange(2014,2030,1)).items()
这将给出日期和假期。现在,我想要针对一些国家的数据。如何循环遍历国家/地区列表,而不是每次都替换上述代码中的国家/地区名称?这里考虑的国家是:
[FRA, Norway, Finland, US, Germany, UnitedKingdom, Sweden]
我尝试了这样的 for 循环:
countrylistLoop = ['FRA', 'Norway', 'Finland', 'US', 'Germany', 'UnitedKingdom', 'Sweden']
for i in countrylistLoop:
print(sorted(holidays.i(years=np.arange(2014,2030,1)).items()),columns=['Date','Holiday'])
Run Code Online (Sandbox Code Playgroud)
这会抛出一个属性错误:
AttributeError: module 'holidays' has no attribute 'i'.
Run Code Online (Sandbox Code Playgroud)
这是有道理的,但我不知道如何继续!
理想情况下,我想循环并将结果存储在数据框中。非常感谢任何帮助!谢谢你!