1

我对 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'])

这会引发 AttributeError:

AttributeError: module 'holidays' has no attribute 'i'.

这是有道理的,但我不知道如何进行!

理想情况下,我想循环并将结果存储在数据框中。非常感谢任何帮助!谢谢!

4

3 回答 3

4

您可以通过以下方式获取物品

import holidays
countrylistLoop = ['FRA', 'Norway', 'Finland', 'US', 'Germany', 'UnitedKingdom', 'Sweden']
for country in countrylistLoop:
    hd = sorted(holidays.CountryHoliday(country, years=np.arange(2014,2030,1)).items())

但它不接受columns排序的论点。

或者您可以根据索引对项目进行排序

hd = sorted(list(holidays.CountryHoliday(country, 
            years=np.arange(2014,2030,1)).items()), 
            key=lambda holiday: holiday[1])
于 2020-02-08T22:52:37.350 回答
1

要提供额外的国家/地区标识符,您可以执行以下操作:

all_holidays = []
country_list = ['UnitedStates', 'India', 'Germany']

for country in country_list:
    for holiday in holidays.CountryHoliday(country, years = np.arange(2018,2021,1)).items():
        all_holidays.append({'date' : holiday[0], 'holiday' : holiday[1], 'country': country})
all_holidays = pd.DataFrame(all_holidays)
all_holidays

结果将是: 在此处输入图像描述

于 2021-10-27T03:11:57.477 回答
0
for i in countrylistLoop:
    holiday = getattr(holidays, i)(years=np.arange(2014,2030,1)).items()
    sorted(holiday)
    print(holiday)

要动态获取属性,请使用getattr.

否则,我将sorted函数拆分出来,因为它返回None,就像 python 的所有变异内置函数一样。

于 2021-10-27T03:30:11.527 回答