我想创建一个新专栏,说明该条目是否为公共假日。它应该是这样的:
datetime holiday
0 2019-01-01 22:00:00 public holiday
1 2019-01-01 23:00:00 public holiday
2 2019-01-02 00:00:00 non-holiday
3 2019-01-02 01:00:00 non-holiday
4 2019-01-02 02:00:00 non-holiday
我制作了一本字典,包含了我这段时间内的所有假期,如下所示:
public_hol = {'xmas 18': '2018-12-25',
'boxing day 18': '2018-12-25',
'new years 19': '2019-01-01',
'good friday 19': '2019-04-19',
'easter monday 19': '2019-04-22',
'may bank holiday': '2019-05-22',
'may bank holiday2': '2019-05-27',
'xmas 19': '2019-12-25',
'boxing day 19': '2019-12-26',
'new years 20': '2020-01-01'}
这是我的代码:
df['holiday'] = df['datetime'].dt.date.map(public_hol).fillna('non-holiday')
这将产生一个新列,该列只包含NA,因此每个条目只有“非假日”。我认为问题在于我使用字典的方式,或者我的代码无法识别日期格式。。。谢谢你的帮助
为了能够使用
map()
,您需要让字典键(而不是值)与数据帧或序列中的数据匹配因此:
'2018-12-25'
)映射到它们的名称('xmas 18'
)李>pd.Timestamp
)中的日期类型匹配,因为这就是您要映射的李>您可以使用以下命令调整当前词典,该命令将反转键和值,并将日期转换为
pd.Timestamp
类型:或者从一开始就以正确的方式定义字典:
(请注意,您的字典中似乎有一些拼写错误,您不应该有两次相同的日期,它只能映射到一个假日,目前您的“圣诞节”和“节礼日”都有2018-12-25。)
相关问题 更多 >
编程相关推荐