如何删除Pandas重采样增加的额外天数?

2024-09-27 00:16:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个带有tick数据的pandas df,索引为datetime64[ns]我想把这个数据重新采样成5分钟的间隔:price_5min = price.price.resample('5T').ohlc().between_time('09:00:00, '16:20:00')

它是有效的,但是它增加了周末和假期到新的时间序列,我需要删除。我没有遵循我们(或任何其他标准的假日日历)。我只想删除不在原始pricedf中的天数。在

索引不是唯一的,很多情况下时间戳相同。熊猫0.20.1版

我所做的:

1)dropna():我有需要填充的nan行,因此这不起作用。在

(二)价格指数差额(价格_5最小指数):给我所有的刻度日期,而不是日期。在

(三)价格指数日期.差价(价格最小索引日期):不作为索引日期是一个努比·恩达雷在

4)价格!=price_5min:错误:只能比较标签相同的DataFrame对象

(五)价格指数!=价格4最小指数:错误:长度必须匹配才能比较

解决问题的建议逻辑:

a)以某种方式比较两个数据帧中的日期并基于此删除,但是如何?在

b)删除无差异天数,但如何删除?在

c)我没有想到的显而易见的事情(很可能…)

df价格如下:

                     price  quantity
time                                
2016-06-15 16:19:20  29.85     429.6
2016-06-15 16:19:20  29.85      65.6
2016-06-15 16:19:20  29.85    1351.4
2016-06-15 16:19:30  29.70     729.4
2016-06-15 16:19:30  29.70     287.0
2016-06-15 16:19:30  29.70     219.4
2016-06-15 16:19:49  29.70      47.4
2016-06-15 16:19:52  29.70      11.8
2016-06-16 09:01:42  29.05     350.0
2016-06-16 09:01:42  29.10     189.4
2016-06-16 09:01:45  29.05      33.6
2016-06-16 09:01:54  29.05      33.6
...

Tags: 数据pandasdf间隔time错误时间价格
2条回答

我认为您可以使用^{}^{}并按^{}过滤:

diffs = np.setdiff1d(price_5min.index.date, price.index.date))
df = price_5min[~np.in1d(price_5min.index.date, diffs]

另一个带有^{}^{}的解决方案:

^{pr2}$
dates = price.index.to_period('D')
dates_5min = price_5min.index.to_period('D')
df = price_5min[~dates_5min.isin(dates_5min.difference(dates))]

快速解决方案: 在

price_5min=price.groupby(price.index.Date).resample('5T').ohlc()
price_5min.index = price_5min.index.droplevel(0)

相关问题 更多 >

    热门问题