当前位置: 首页 > 面试题库 >

熊猫:检查日期是否为假期并分配布尔值

傅皓君
2023-03-14
问题内容

我有一个带有date列的pandas数据框,并且试图添加一个新的布尔值列,以指示给定的日期是否是假日。

以下是代码,但由于类型似乎不同而无法正常工作(所有值均为False),并且我无法弄清楚如何将熊猫数据框中的“日期”设为相同类型作为假期:

cal = USFederalHolidayCalendar()
holidays = cal.holidays(start=train_df['date'].min(),
                        end=train_df['date'].max()).to_pydatetime()
train_df['holiday'] = train_df['date'].isin(holidays)
print type(train_df['date'][1])
print type(holidays[0])

问题答案:

您无需进行任何转换。只是直接比较。pandas非常聪明,可以比较许多不同类型的日期和时间。如果您在日期/时间兼容性方面遇到问题,则必须使用稍微深奥的格式。

import pandas as pd
from pandas.tseries.holiday import USFederalHolidayCalendar as calendar

dr = pd.date_range(start='2015-07-01', end='2015-07-31')
df = pd.DataFrame()
df['Date'] = dr

cal = calendar()
holidays = cal.holidays(start=dr.min(), end=dr.max())

df['Holiday'] = df['Date'].isin(holidays)
print df

结果:

         Date Holiday
0  2015-07-01   False
1  2015-07-02   False
2  2015-07-03    True
3  2015-07-04   False
4  2015-07-05   False
5  2015-07-06   False
6  2015-07-07   False
7  2015-07-08   False
8  2015-07-09   False
9  2015-07-10   False
10 2015-07-11   False
11 2015-07-12   False
12 2015-07-13   False
13 2015-07-14   False
14 2015-07-15   False
15 2015-07-16   False
16 2015-07-17   False
17 2015-07-18   False
18 2015-07-19   False
19 2015-07-20   False
20 2015-07-21   False
21 2015-07-22   False
22 2015-07-23   False
23 2015-07-24   False
24 2015-07-25   False
25 2015-07-26   False
26 2015-07-27   False
27 2015-07-28   False
28 2015-07-29   False
29 2015-07-30   False
30 2015-07-31   False

请注意,2015年7月4日是星期六。



 类似资料:
  • 我有一个关于日期范围的问题。我用板条箱装了这样的东西: 结果: 我需要删除3个日期:2017-12-25, 2017-12-27和2018-01-04。我在寻找能帮助我的公式,但我没有找到正确的。我也试图将所有这些更改为列表,但后来我无法使用删除公式,因为它没有找到列表中的值...有人知道怎么修吗? 谢谢大家!

  • 问题内容: 我正在尝试使用熊猫创建交易日历。我能够基于USFederalHolidayCalendar创建一个cal实例。USFederalHolidayCalendar与交易日历不一致,因为交易日历不包括哥伦布日和退伍军人节。但是,交易日历包括耶稣受难日(不包括在USFederalHolidayCalendar中)。以下代码中除最后一行外的所有内容均有效: tradingCal实例似乎可以正常运

  • 问题内容: 检查值是否为有效日期(允许使用任何已知的日期格式)的简便方法是什么。 比如我有值,,它都应该被视为日期值,和值,,,不应被视为一个日期值。如果可能的话,最简单的检查方法是什么?因为时间戳也将被允许。 问题答案: 作为此副本的副本而被关闭,因此我认为在此处添加一些新信息很重要。我之所以写它,是因为我害怕人们会真正复制并粘贴此处发布的一些代码并在生产中使用它。 此处的大多数答案都使用一些仅

  • 以下是场景: 我有一个日期和一个不同的日期格式。示例: 日期:2016-10-19 日期格式:“DD-MM-YYYY”。 我需要检查这个日期是否有效。 我尝试过跟踪事情 d.isValid()每次返回false。Moment.js解析给定格式的日期吗? 然后我尝试先在中格式化日期,然后将其传递给矩。js: 现在<代码>日期。isValid()给了我想要的结果,但现在是时候了。js日期对象创建两次。

  • 问题内容: 如何检查布尔值是否为null?因此,如果我知道“ hideInNav”为空。如何阻止它进一步执行?像下面这样的东西似乎不起作用,但是为什么呢? 问题答案: 只能是或因为它是原始数据类型(+ 变量的默认值为)。如果要使用值,则可以改用类。布尔是一种引用类型,这就是您可以分配给布尔“变量”的原因。例:

  • 问题内容: 我正在尝试对应该仅包含当前日期和将来日期的日期进行验证,如果该日期是较早的日期,则它应该显示 日期早于当前日期 我也想允许当前日期。现在,将当前日期设置为gievnDate,它始终显示 日期早于当前日期 但我期望输出为 日期是指定日期的未来日期,例如今天。 下面是我一直在尝试的代码: 在这里,当我检查15/02/13时,它显示为比当前日期早。我的方法是否错误?还是有更好的方法? 问题答