python - 如何在熊猫组中选择日期范围?
问题描述
我有一个格式如下的数据框,我想按日期和项目分组,然后每天计算每个项目的序列号。
但是,我想将数据框中的日期限制为最近到 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)
但这给了我类型错误。
解决方案
您必须首先将日期列转换为日期时间数据类型:
df.Date = pd.to_datetime(df.Date)
现在您可以选择所需的范围:
slice = df[df.Date >= df.Date.max() - datetime.timedelta(10)]
PS 过滤应该在分组之前完成。顺便说一句,这将使分组更快。
推荐阅读
- python - selenium.common.exceptions.NoSuchElementException:消息:无法找到元素:[name="username"]
- r - 无法在 R 中创建分组汇总数据集
- python-3.x - 打印包含字符串的列表
- python - 如何使用谷歌云自动化我的 jupyter 笔记本?
- java - 为什么我会收到唯一索引或主键违规?
- python - 未使用局部变量 'char' 值 - 我该如何解决?
- amazon-web-services - AWS Glue Catalog 无法检测 parquet 文件,而是将根路径创建为单个表
- ruby - 将 LDAP 搜索结果转换为 CSV
- image-processing - 使用 PHP Imagick 调整原始图像大小不起作用
- flutter - Dart:地图从地图中添加更多具有不同子类型的条目