import pandas as pd
from workalendar.core import Calendar
from workalendar.registry import registry

CalendarClass = registry.get('US')
calendar = CalendarClass()
calendar.holidays(2019)

#> [(datetime.date(2022, 1, 1), 'New year') ...]

您可以看到上面的输出,它输出两个元素的列表.如何将其转换为包含两列的数据帧,其中一列是日期列,另一列是字符串列?在我try 过的其他事情中,我似乎无法在名单上排名pd.DataFrame().

推荐答案

您可以简单地使用DataFrame构造函数:

df = pd.DataFrame(calendar.holidays(2019), columns=['date', 'name'])

输出:

         date                                 name
0  2019-01-01                             New year
1  2019-01-21  Birthday of Martin Luther King, Jr.
2  2019-02-18                Washington's Birthday
3  2019-05-27                         Memorial Day
4  2019-07-04                     Independence Day
5  2019-09-02                            Labor Day
6  2019-10-14                         Columbus Day
7  2019-11-11                         Veterans Day
8  2019-11-28                     Thanksgiving Day
9  2019-12-25                        Christmas Day

NB. if you want pandas datetime type you can convert the dates with 100

combine several years:

选项1

lst = [calendar.holidays(year) for year in [2019, 2020]]
df = pd.concat([pd.DataFrame(l, columns=['date', 'name']) for l in lst],
               ignore_index=True)

          date                                 name
0   2019-01-01                             New year
1   2019-01-21  Birthday of Martin Luther King, Jr.
2   2019-02-18                Washington's Birthday
...
19  2020-11-26                     Thanksgiving Day
20  2020-12-25                        Christmas Day

选项2:多索引

df = pd.concat({year: pd.DataFrame(calendar.holidays(year),
                                   columns=['date', 'name'])
                for year in [2019, 2020]})

               date                                 name
2019 0   2019-01-01                             New year
     1   2019-01-21  Birthday of Martin Luther King, Jr.
     2   2019-02-18                Washington's Birthday
     3   2019-05-27                         Memorial Day
     4   2019-07-04                     Independence Day
     5   2019-09-02                            Labor Day
     6   2019-10-14                         Columbus Day
     7   2019-11-11                         Veterans Day
     8   2019-11-28                     Thanksgiving Day
     9   2019-12-25                        Christmas Day
2020 0   2020-01-01                             New year
     1   2020-01-20  Birthday of Martin Luther King, Jr.
     2   2020-02-17                Washington's Birthday
     3   2020-05-25                         Memorial Day
     4   2020-07-03          Independence Day (Observed)
     5   2020-07-04                     Independence Day
     6   2020-09-07                            Labor Day
     7   2020-10-12                         Columbus Day
     8   2020-11-11                         Veterans Day
     9   2020-11-26                     Thanksgiving Day
     10  2020-12-25                        Christmas Day

Python相关问答推荐

大Pandas 胚胎中产生组合

对Numpy函数进行载体化

如何使用matplotlib在Python中使用规范化数据和原始t测试值创建组合热图?

如何将双框框列中的成对变成两个新列

非常奇怪:tzLocal.get_Localzone()基于python3别名的不同输出?

从groupby执行计算后创建新的子框架

当独立的网络调用不应该互相阻塞时,'

Stacked bar chart from billrame

从嵌套的yaml创建一个嵌套字符串,后面跟着点

Python脚本使用蓝牙运行在Windows 11与raspberry pi4

索引到 torch 张量,沿轴具有可变长度索引

手动设置seborn/matplotlib散点图连续变量图例中显示的值

循环浏览每个客户记录,以获取他们来自的第一个/最后一个渠道

polars:有效的方法来应用函数过滤列的字符串

从源代码显示不同的输出(机器学习)(Python)

Django Table—如果项目是唯一的,则单行

仅使用预先计算的排序获取排序元素

有没有一种方法可以在朗肯代理中集成向量嵌入

类型对象';敌人';没有属性';损害';

时长超过24小时如何从Excel导入时长数据