Pandas 熊猫重新采样OHLC日内数据,不包括正常交易时间以外的数据

Pandas 熊猫重新采样OHLC日内数据,不包括正常交易时间以外的数据,pandas,Pandas,我正在将30分钟数据重新采样为小时数据,但它添加了表示24小时内所有30分钟周期的NaN行。我想它重新采样,只有当有数据在30分钟的记录。原始df没有任何“额外”行,只有20天内9:30-4:00的每小时数据。此外,它还包括周末在新的DFrsu每小时一次 df_RSHourly = df.resample('1H', base=0.5).agg( {'close': 'last','high': 'max','low': 'min', 'open': 'first', 'volume':

我正在将30分钟数据重新采样为小时数据,但它添加了表示24小时内所有30分钟周期的NaN行。我想它重新采样,只有当有数据在30分钟的记录。原始df没有任何“额外”行,只有20天内9:30-4:00的每小时数据。此外,它还包括周末在新的DFrsu每小时一次

df_RSHourly = df.resample('1H', base=0.5).agg(
    {'close': 'last','high': 'max','low': 'min', 'open': 'first', 'volume': 'sum'}
]

print df_RSHhourly


我也遇到过类似的分钟重采样问题,我找到了两种解决方法

简单但低效的方法 我最初通过添加一个实用程序列来解决这个问题,该列检查是否应该包括日期/时间,然后在条件为真的地方获取切片

def in_hours(row):
    if row.name.hour >= 22 
       or row.name.hour < 9 
       or row.name.hour == 9 and row.name.minute < 30:
        return False
    return True

df['keep'] = df.apply(in_hours, axis=1)
df2 = dft[dft['keep']==True]
del dft['keep']

我找到的最简单的解决方案是

df_RSHhourly.between_time('09:30', '16:00')
在我的代码中,我是这样应用它的:

y = data['prices'].resample('60S').ohlc()
y = y.fillna(method='ffill')
y = y.between_time('09:30', '16:00')
参考:


我想你可以直接使用
dropna
df\u RSHhourly.dropna()
我认为如果在创建df后进行重新采样,则不会正确地重新采样。会吗?因为从4:00到9:30的数据不会被正确地重新采样以构建正确的小时条形图?如果可能的话,我希望它在不创建NaN行值的情况下重新采样。如果您的数据存在缺口(即在30分钟内或可能在一整小时内没有交易非流动证券),那么这里的完整解决方案是什么?执行重采样,然后应用interfertiem函数?df_RSHourly=df.resample('1H',base=0.5).agg({'close':'last','high':'max','low':'min','open':'first','volume':'sum'}),然后df_RSHhourly.在时间之间('09:30','16:00'))
df_RSHhourly.between_time('09:30', '16:00')
y = data['prices'].resample('60S').ohlc()
y = y.fillna(method='ffill')
y = y.between_time('09:30', '16:00')