首页 > 解决方案 > 如何在熊猫组中选择日期范围?

问题描述

我有一个格式如下的数据框,我想按日期和项目分组,然后每天计算每个项目的序列号。

但是,我想将数据框中的日期限制为最近到 10 天前的日期范围,并排除此范围之外的任何数据。

df = pd.DataFrame({'Date' : ['2018-01-01', '2018-01-01', '2018-01-02', '2018-01-03','2018-01-03', '2018-01-03', '2018-01-06, '2018-01-10'], 'Item' : ['Apple', 'Pear', 'Banana', 'Potato','Kiwi', 'Banana', 'Kiwi', 'Apple'],'serial no':['124161', '7124112', '123237', '765432','823542', '263872', '873492', '2342784']})
df

为了将数据框转换为我想要的格式,我执行以下操作并获得一个 df,例如:

df = df.dropna(subset = ['Date','serial no']).sort_values(by = ['Date','serial no']).groupby(['Date','serial no']).count()
df

如何以我想要的方式限制数据的日期范围?

我尝试使用类似的东西,datetime.datetime.now() -datetime.timedelta(10)但这给了我类型错误。

标签: pythonpandas

解决方案


您必须首先将日期列转换为日期时间数据类型:

df.Date = pd.to_datetime(df.Date)

现在您可以选择所需的范围:

slice = df[df.Date >= df.Date.max() - datetime.timedelta(10)]

PS 过滤应该在分组之前完成。顺便说一句,这将使分组更快。


推荐阅读