我有一个date列,其中熊猫数据框中的数据来自1年,粒度为1分钟:
sp.head()
Open High Low Last Volume # of Trades OHLC Avg HLC Avg HL Avg Delta HiLodiff OCdiff div_Bar_Delta
Date
2019-06-13 15:30:00 2898.75 2899.25 2896.50 2899.25 1636 862 2898.44 2898.33 2897.88 -146 11.0 -2.0 1.0
2019-06-13 15:31:00 2899.25 2899.75 2897.75 2898.50 630 328 2898.81 2898.67 2898.75 168 8.0 3.0 2.0
2019-06-13 15:32:00 2898.50 2899.00 2896.50 2898.00 1806 562 2898.00 2897.83 2897.75 -162 10.0 2.0 -1.0
2019-06-13 15:33:00 2898.25 2899.25 2897.75 2898.00 818 273 2898.31 2898.33 2898.50 -100 6.0 1.0 -1.0
2019-06-13 15:34:00
现在,我需要从“日期”列中删除特定的日期。
我发现没有错误的唯一方法是:
hd1_from = '2020-02-17 15:30:00'
hd1_till = '2020-02-17 21:59:00'
sp = sp[(sp.index < hd1_from) | (sp.index > hd1_till)]
但不幸的是,此日期仍留在列中
此外,如果我要删除整个日期范围内的20天,此解决方案似乎有些笨拙
有任何建议如何正确执行此操作吗?
答案 0 :(得分:1)
您可以通过简单的df.loc[startdatetime : enddatetime]
在日期范围内对数据框进行切片。但是,您必须确保对日期字段进行了索引和排序。
例如:
df.loc['2020-02-12 23:49:17': '2020-03-12 23:49:17'])
答案 1 :(得分:1)
如果要删除特定日期(假设Date
列为index
列),可以尝试这种方法-
to_delete = ['2020-02-17', '2020-02-18']
sp[~(sp.index.strftime('%Y-%m-%d').isin(to_delete))]