Python 3.x 我如何给布尔值来决定我的时间戳是假日和周末,还是不在python的数据帧中

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

我有一个dataframe日历,它包含日期,是否为假日

我有另一个数据帧包含日期时间戳,我想检查每个数据帧是否为假日(以及周末)

我怎么做呢

例如,这是我的日历:

  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'