【发布时间】:2020-10-25 01:53:35
【问题描述】:
我正在做一些比较,以了解特定日期是否在特定变量中,使用isin。
在我的工作测试中,我用来比较holidays 的变量是DatetimeIndex,大小为(267,),如下所示:
如下所示:
我现在正在探索一种不同的方法,我现在拥有的变量是DataFrame,大小为(261, 0)。
如下所示:
我应该如何将 Dataframe (cal) 转换为 DatetimeIndex?
下面我将留下我用于这种新方法的代码,因为它可能会有所帮助:
import pandas as pd
from pandas.tseries.holiday import *
from datetime import date
from fbprophet import *
from fbprophet.make_holidays import make_holidays_df
year_list = [2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020]
PTBusinessCalendar = make_holidays_df(year_list=year_list, country='PT')
ESBusinessCalendar = make_holidays_df(year_list=year_list, country='ES')
iberian = [PTBusinessCalendar, ESBusinessCalendar]
IberianBusinessCalendar = pd.concat(iberian).sort_values('ds').reset_index(drop=True)
dr = pd.date_range(start='2008-01-01', end='2020-02-1')
df = pd.DataFrame()
df['Date'] = dr
cal = IberianBusinessCalendar.drop('holiday', 1)
cal['Holiday'] = IberianBusinessCalendar['ds'].dt.date
cal['Holiday'] = pd.to_datetime(cal['Holiday'])
cal = cal.drop('ds', 1).set_index(cal['Holiday']).drop('Holiday', 1)
df['Holiday'] = df['Date'].isin(cal).astype(int)
print(df)
谁的输出如下(可以看到,它没有在Date 2008-01-01中选择Holiday:
【问题讨论】:
-
您可以在this Medium article阅读更多关于将数据框索引转换为日期时间索引的内容。
标签: python pandas dataframe datetime type-conversion