我有一个带有日期为索引的数据框架:
VL
2018-02-05 101.56093
2018-12-31 95.87728
2019-01-04 96.29820
2019-01-11 97.23475
2019-01-18 98.39828
2019-01-25 98.66896
2019-01-31 99.12407
2019-02-01 99.13224
2019-02-08 99.06382
2019-02-15 99.79966
我需要过滤行,以便每行使用日期D
进行,如果在dataFrame中存在D-7
的行,请将其保留。
示例:
2019-02-15
将保留,因为2019-02-08
存在2019-01-31
将被过滤为2019-01-24
不存在。
我已经使用循环已经实现了此操作,但是我想知道是否有一种面向熊猫进行这种过滤的方法。
iiuc,您可以使用pd.Timedelta
和isin
:
df[(df['date'] - pd.Timedelta(days=7)).isin(df['date'])]
输出:
date VL
3 2019-01-11 97.23475
4 2019-01-18 98.39828
5 2019-01-25 98.66896
7 2019-02-01 99.13224
8 2019-02-08 99.06382
9 2019-02-15 99.79966
如果日期在索引中,请使用以下方式:
df[(df.index - pd.Timedelta(days=7)).isin(df.index)]
输出:
VL
date
2019-01-11 97.23475
2019-01-18 98.39828
2019-01-25 98.66896
2019-02-01 99.13224
2019-02-08 99.06382
2019-02-15 99.79966