Python 如何为自定义日历和时间表重新采样和清理数据帧?

Python 如何为自定义日历和时间表重新采样和清理数据帧?,python,pandas,time-series,Python,Pandas,Time Series,(使用Python 3.5.6) 嗨, 我正试图准备一个数据框,用于定制交易日历的zipline。假设我只在工作日从凌晨2:15到晚上21:58导入了相关的timeseries数据,这些信息稍后将由zipline使用frequency=“minute”。。。因此,数据必须准确 大概是这样的: de = OrderedDict() de['DE30'] = pd.read_csv("DE.30.1m.csv",header=None) de['DE30']['date'] = pd.to_date

(使用Python 3.5.6)

嗨,
我正试图准备一个数据框,用于定制交易日历的zipline。假设我只在工作日从凌晨2:15到晚上21:58导入了相关的timeseries数据,这些信息稍后将由zipline使用frequency=“minute”。。。因此,数据必须准确

大概是这样的:

de = OrderedDict()
de['DE30'] = pd.read_csv("DE.30.1m.csv",header=None)
de['DE30']['date'] = pd.to_datetime(de['DE30']['time'],utc=True)
de['DE30'].set_index('date', inplace=True)
de['DE30'] = de['DE30'].resample(rule="min").mean()
de['DE30'].rename(columns={2:'open',3:'high',4:'low',5:'close',6:'volume'},inplace=True)

de['DE30'].loc[datetime(2020,3,30,21,57):].head()

          date               open   high    low    close    volume          
2020-03-30 21:57:00+00:00   9846.4  9848.9  9839.4  9843.4  62.0
2020-03-30 21:58:00+00:00   9842.9  9842.9  9840.9  9840.9  2.0
2020-03-30 21:59:00+00:00   NaN NaN NaN NaN NaN
2020-03-30 22:00:00+00:00   NaN NaN NaN NaN NaN
2020-03-30 22:01:00+00:00   NaN NaN NaN NaN NaN
KeyError: 'the label [2020-03-31 05:37:00+00:00] is not in the [index]'
这里有一件棘手的事情:如果我像以前一样对完整的timeseries进行重新采样,那么我就不会错过原始信息中的任何“分钟”(即,如果我的.CSV没有错误地包含一些重要的行),但是我将有一项繁琐的任务来删除21:59到2:15之间的所有行(没有交易时间)以及周末和假期信息。如何以“简单的方式”做到这一点

如果我不重新采样,我将向zipline传递一个面板,其中只包含正确的交易时间和工作日(zipline将使用我注册的预定义自定义交易日历),但是我可以获得如下错误:

de = OrderedDict()
de['DE30'] = pd.read_csv("DE.30.1m.csv",header=None)
de['DE30']['date'] = pd.to_datetime(de['DE30']['time'],utc=True)
de['DE30'].set_index('date', inplace=True)
de['DE30'] = de['DE30'].resample(rule="min").mean()
de['DE30'].rename(columns={2:'open',3:'high',4:'low',5:'close',6:'volume'},inplace=True)

de['DE30'].loc[datetime(2020,3,30,21,57):].head()

          date               open   high    low    close    volume          
2020-03-30 21:57:00+00:00   9846.4  9848.9  9839.4  9843.4  62.0
2020-03-30 21:58:00+00:00   9842.9  9842.9  9840.9  9840.9  2.0
2020-03-30 21:59:00+00:00   NaN NaN NaN NaN NaN
2020-03-30 22:00:00+00:00   NaN NaN NaN NaN NaN
2020-03-30 22:01:00+00:00   NaN NaN NaN NaN NaN
KeyError: 'the label [2020-03-31 05:37:00+00:00] is not in the [index]'
因为那天05:37分的行不在原始的.csv中

选项1)是否可以仅检查特定时间段中是否存在“缺失”分钟,而无需重新采样?或者

选项2)如果我决定重新采样,是否有一种简单的方法来清理不需要时间、周末等的行