【问题标题】:Passing an array of countries to a function将国家/地区数组传递给函数
【发布时间】:2020-05-25 06:23:48
【问题描述】:

我对 Python 还很陌生。我正在利用 Python 的 holidays 包,该包按国家/地区划分公共假期。我正在寻找一个函数,它可以遍历任意数量的国家并返回一个带有 3 列的 dataframe

Date, Holiday, Country

基于我有限的知识,我想出了这种实现方式:

import holidays
def getholidayDF(*args):
    holidayDF = pd.DataFrame(columns=['Date','Holiday','Country'])

    for country in args:
        holidayDF.append(sorted(holidays.CountryHoliday(country,years=np.arange(2014,2030,1)).items()))
        holidayDF['Country'] = country
        return holidayDF

holidays = getholidayDF('FRA', 'Norway', 'Finland', 'US', 'Germany', 'UnitedKingdom', 'Sweden')

这将返回一个空白dataframe。我不知道如何进行!

【问题讨论】:

  • 你的return 在你的for 循环中。这会立即在第一个循环中脱离函数
  • 将 return 移出 for 循环给出了相同的结果。 ://
  • holidayDF['Country'] = country 不断将值重新分配给同一个键。字典键必须是唯一的。我们会在这里很长时间,我们会一直这样调试;你应该退后一步,学习一些 Python 基础知识
  • 变量和函数名称应遵循lower_case_with_underscores 样式。附加到 DataFrame 不是很好,您应该真正阅读文档。你用 DataFrame 做什么?
  • ..还有很多其他的例子你可以在here找到。

标签: python function numpy dataframe python-holidays


【解决方案1】:

如果您如下所示更改您的 for 循环,您应该没问题。大多数相关的 cmets 是由用户 roganjosh 制作的。 O'Reilly、Wrokx、Prentece Hall、Pearson、Packt.. 仅举几家出版商的名字......他们为您准备了一些好书。暂时跳过食谱。

.. code snippet ...

for country in args:
        holidayDF = holidayDF.append(sorted(holidays.CountryHoliday(country,years=np.arange(2014,2030,1)).items()))
 #       holidayDF['Country'] = country  # remove this from the for-loop.
return holidayDF  # move out of the for-loop

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-06
    • 1970-01-01
    • 2020-07-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多