我在不同的数据框中有两个datetime列,其中一个是常规日期,另一个是假期日期。 我想在第一个数据框中添加一个新列,说明该行中的日期是否是假期。
df = pd.DataFrame({'date': [pd.Timestamp("2018-01-01"), pd.Timestamp("2018-01-02")]})
holidays = pd.DataFrame({'date': [pd.Timestamp("2018-01-01"), pd.Timestamp("2018-12-25")]})
这是我当前的方法:
holiday_dates = holidays.date
df['holiday'] = df.date.map(lambda x: sum(holiday_dates.isin([x])) > 0)
它可以正常工作,在下面提供所需的输出,但是对于我大约100,000个条目的数据集来说,它的运行速度非常慢。
In[]: df
Out[]:
date holiday
0 2018-01-01 True
1 2018-01-02 False
是否有更有效的方法来执行此操作?
答案 0 :(得分:2)
我想在第一个数据框中添加一个新列,说明该行中的日期是否是假期。
您应该可以直接使用.isin()
:
In [7]: df['holiday'] = df['date'].isin(holidays['date'])
In [8]: df
Out[8]:
date holiday
0 2018-01-01 True
1 2018-01-02 False