如何删除 pandas 数据框中的日期范围
How to delete date ranges in a pandas dataframe
我在 pandas 数据框中有一个日期列,其中包含 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
现在我需要从 'Date' 列中删除特定日期。
我发现没有错误的唯一方法是:
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 天
,此解决方案显得有点笨拙
对如何正确执行此操作有何建议?
只需df.loc[startdatetime : enddatetime]
,您就可以按日期范围对数据框进行切片。但是你必须确保日期字段被索引和排序。
例如:
df.loc['2020-02-12 23:49:17': '2020-03-12 23:49:17'])
如果要删除特定日期(前提是 Date
列是 index
列),您可以尝试这种方法 -
to_delete = ['2020-02-17', '2020-02-18']
sp[~(sp.index.strftime('%Y-%m-%d').isin(to_delete))]
我在 pandas 数据框中有一个日期列,其中包含 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
现在我需要从 'Date' 列中删除特定日期。
我发现没有错误的唯一方法是:
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 天
,此解决方案显得有点笨拙
对如何正确执行此操作有何建议?
只需df.loc[startdatetime : enddatetime]
,您就可以按日期范围对数据框进行切片。但是你必须确保日期字段被索引和排序。
例如:
df.loc['2020-02-12 23:49:17': '2020-03-12 23:49:17'])
如果要删除特定日期(前提是 Date
列是 index
列),您可以尝试这种方法 -
to_delete = ['2020-02-17', '2020-02-18']
sp[~(sp.index.strftime('%Y-%m-%d').isin(to_delete))]