【问题标题】:How to filter a dataframe for a given time range?如何过滤给定时间范围的数据框?
【发布时间】:2020-09-15 00:19:19
【问题描述】:

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

例如:

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

现在是 9 月 14 日,我想删除旧数据,在本例中是从 1 月到 3 月 14 日。

如果我们是在 12 月,则从 6 月到 12 月,以此类推。

谢谢

【问题讨论】:

标签: python pandas dataframe datetime timedelta


【解决方案1】:
  • 月份是任意时间段,因为长度会发生变化
  • 使用 Boolean Indexing 并过滤当前日期减去 182 天
  • 替代方案,使用python dateutil模块中的relativedelta,可以做到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)]

【讨论】:

  • 我又试了一次,我不需要第一行谢谢!
  • @DanielaBrieva 是的,第一行只是构建一个测试数据框。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-06
  • 2020-05-06
  • 1970-01-01
相关资源
最近更新 更多