如何过滤给定时间范围内的数据帧?
How to filter a dataframe for a given time range?
我有一个每周更新的数据框,我想删除超过 6 个月的数据
例如:
我有一个从一月份到现在的数据框。
现在是 9 月 14 日,我想删除旧数据,在本例中是从 1 月到 3 月 14 日。
如果我们是在 12 月,那么它会从 6 月一直持续到 12 月,依此类推。
谢谢
- 月份是任意时间段,因为长度会改变
- 使用 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)]
我有一个每周更新的数据框,我想删除超过 6 个月的数据
例如:
我有一个从一月份到现在的数据框。
现在是 9 月 14 日,我想删除旧数据,在本例中是从 1 月到 3 月 14 日。
如果我们是在 12 月,那么它会从 6 月一直持续到 12 月,依此类推。
谢谢
- 月份是任意时间段,因为长度会改变
- 使用 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)]