我有一个以日期为索引的DataFrame:
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-7 的行存在于DataFrame中,则对于日期为的每一行,都会保留它。
示例:
2019-02-15将保留下来,因为2019-02-08存在2019-01-31将被过滤,因为2019-01-24不存在。我已经使用循环实现了这一点,但是我想知道是否有一种更面向熊猫的方法来进行这种过滤。
发布于 2019-02-19 19:04:33
你可以使用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.79966https://stackoverflow.com/questions/54773144
复制相似问题