如何过滤给定时间范围内的数据帧?

时间:2020-09-15 00:19:19

标签: python pandas dataframe datetime timedelta

我有一个每周更新的数据框,我想删除6个月以上的数据

例如:

从一月到现在,我都有一个数据框。

现在是9月14日,我想删除旧数据,在这种情况下是从1月到3月14日。

在我们是12月的情况下,从6月到12月,依此类推。

谢谢

1 个答案:

答案 0 :(得分:2)

  • 月份是任意时间段,因为长度会发生变化
  • 使用minimal reproducible example并针对当前日期减去182天进行过滤
  • 或者,使用python relativedelta模块中的dateutil,它可以完成months
from datetime import datetime
import pandas as pd
from dateutil.relativedelta import relativedelta as rd

# This line is just for creating test data
df = pd.DataFrame({'datetime': pd.date_range(start='2020-01-01', end=datetime.today(), freq='1d').to_pydatetime().tolist()})

# filter out the everything greater than 182 days
df_updated = df[df.datetime > datetime.today() - pd.Timedelta(days=182)]

# alternatively, use the relativedelta
df_updated = df[df.datetime > datetime.today() - rd(months=6)]