Python 3.x 我如何给布尔值来决定我的时间戳是假日和周末,还是不在python的数据帧中
我有一个dataframe日历,它包含日期,是否为假日 我有另一个数据帧包含日期时间戳,我想检查每个数据帧是否为假日(以及周末) 我怎么做呢 例如,这是我的日历:Python 3.x 我如何给布尔值来决定我的时间戳是假日和周末,还是不在python的数据帧中,python-3.x,pandas,dataframe,datetime,calendar,Python 3.x,Pandas,Dataframe,Datetime,Calendar,我有一个dataframe日历,它包含日期,是否为假日 我有另一个数据帧包含日期时间戳,我想检查每个数据帧是否为假日(以及周末) 我怎么做呢 例如,这是我的日历: 0 2015-01-01 1 New Year's Day 1 2015-04-03 1 Good Friday (Karfreitag) 2 2015-04-05 1
0 2015-01-01 1 New Year's Day
1 2015-04-03 1 Good Friday (Karfreitag)
2 2015-04-05 1 Easter Sunday (Ostersonntag)
3 2015-04-06 1 Easter Monday (Ostermontag)
4 2015-04-27 1 King's Day (Netherlands)
5 2015-05-04 1 Remembrance Day
6 2015-05-05 1 Liberation Day
7 2015-05-14 1 Ascension Day (Christi Himmelfahrt)
... ...
这是我的数据帧:
0 2015-01-01 06:00:00 88 ... 6.0
1 2015-01-01 07:00:00 86 ... 5.8
2 2015-01-01 08:00:00 86 ... 5.3
3 2015-01-01 09:00:00 84 ... 5.5
4 2015-01-01 10:00:00 81 ... 5.6
5 2015-01-01 11:00:00 78 ... 5.8
6 2015-01-01 12:00:00 76 ... 6.0
7 2015-01-01 13:00:00 74 ... 5.5
8 2015-01-01 14:00:00 73 ... 6.3
9 2015-01-01 15:00:00 73 ... 6.5
10 2015-01-01 16:00:00 73 ... 6.7
11 2015-01-01 17:00:00 73 ... 7.1
12 2015-01-01 18:00:00 73 ... 7.6
13 2015-01-01 19:00:00 73 ... 8.1
14 2015-01-01 20:00:00 74 ... 8.6
15 2015-01-01 21:00:00 75 ... 9.1
16 2015-01-01 22:00:00 75 ... 9.3
17 2015-01-01 23:00:00 78 ... 9.6
18 2015-01-02 00:00:00 84 ... 9.8
19 2015-01-02 01:00:00 86 ... 9.9
20 2015-01-02 02:00:00 87 ... 9.9
这就是我想要的:
0 2015-01-01 06:00:00 88 ... 6.0 1
1 2015-01-01 07:00:00 86 ... 5.8 1
2 2015-01-01 08:00:00 86 ... 5.3 1
3 2015-01-01 09:00:00 84 ... 5.5 1
4 2015-01-01 10:00:00 81 ... 5.6 1
5 2015-01-01 11:00:00 78 ... 5.8 1
6 2015-01-01 12:00:00 76 ... 6.0 1
7 2015-01-01 13:00:00 74 ... 5.5 1
8 2015-01-01 14:00:00 73 ... 6.3 1
9 2015-01-01 15:00:00 73 ... 6.5 1
10 2015-01-01 16:00:00 73 ... 6.7 1
11 2015-01-01 17:00:00 73 ... 7.1 1
12 2015-01-01 18:00:00 73 ... 7.6 1
13 2015-01-01 19:00:00 73 ... 8.1 1
14 2015-01-01 20:00:00 74 ... 8.6 1
15 2015-01-01 21:00:00 75 ... 9.1 1
16 2015-01-01 22:00:00 75 ... 9.3 1
17 2015-01-01 23:00:00 78 ... 9.6 1
18 2015-01-02 00:00:00 84 ... 9.8 0
19 2015-01-02 01:00:00 86 ... 9.9 0
20 2015-01-02 02:00:00 87 ... 9.9 0
我想添加一个列并将2015-01-01
标记为1
和2015-01-02
标记为0
此外,当日期时间显示为周末时,也应为
标记为
1
要从日历中获取1,您可以合并dfs,您应该为dfs创建一列,其中只包含df中的日期(而不是日期和时间),以便它与日历中的格式匹配
要知道这一天是不是工作日,你可以和我核实一下
希望这有帮助 有几种方法可以解决这个问题。一个是:
注意因为您没有包含列名,所以我自己制作,所以您必须将它们更改为正确的列名 解释
dt.date
返回不带时间的日期:
df['date'].dt.date.head()
0 2015-01-01
1 2015-01-01
2 2015-01-01
3 2015-01-01
4 2015-01-01
Name: date, dtype: object
'|'.join()
将日历日期作为字符串返回,字符串由管道
分隔,管道是正则表达式中的or运算符:
'|'.join(calendar['date'].astype(str))
'2015-01-01|2015-04-03|2015-04-05|2015-04-06|2015-04-27|2015-05-04|2015-05-05|2015-05-14'
这有帮助!我也能很好地理解你的解释。谢谢!但是,我如何在同一时间检查周末,而不覆盖我检查日历的结果呢?
'|'.join(calendar['date'].astype(str))
'2015-01-01|2015-04-03|2015-04-05|2015-04-06|2015-04-27|2015-05-04|2015-05-05|2015-05-14'