python - 日期之间的任何差异都超过阈值
问题描述
我有一个 pandas 数据框列,其中每一行都包含一个日期列表。我想创建一个标志来标识列表中的任何日期是否与“任何”其他日期相隔 7 天
例如
list = ['2019-10-22','2019-10-24','2019-10-29']
这应该导致错误,因为最后一个(元素)日期与至少一个其他日期相距超过 7 天
这种情况在数据框的每一行都重复
谢谢
解决方案
一种方法是 using explode
, cast todatetime
和聚合 using np.ptp
。我创建了一个小型测试 DF 来运行它。
import pandas as pd
import numpy as np
df = pd.DataFrame({'something': [1,2],
'dates':[['2019-10-22','2019-10-24','2019-10-29'], ['2019-10-21','2019-10-12','2019-10-19']]})
df['sevendays'] = df.dates.explode().astype('datetime64[ns]').groupby(level=0).agg(np.ptp).dt.days <= 7
print(df)
something dates sevendays
0 1 [2019-10-22, 2019-10-24, 2019-10-29] True
1 2 [2019-10-21, 2019-10-12, 2019-10-19] False
在您的问题中,您提到 7 天和 7 天以上作为截止点。目前将False
持续7天以上,您可以根据需要调整解决方案。
推荐阅读
- python-3.x - 如何控制 Jupyter Notebook 保存 ipynb 文件的文件夹
- java - Postgresql:在null处和附近出现语法错误
- opencv - 检测一组像素是否越过边界框的边界
- amazon-web-services - 使用 SSM 代理端口转发时“无法执行启动会话”
- android - ROOM 数据库的空指针异常
- amazon-web-services - 在 AWS 解析器映射模板中,是否有任何方法可以从对象中删除字段?
- sql - 如何在 postgresql 中获取具有特定数组大小的字段
- r - 确定列表中的哪些数据帧在 R 中是唯一的
- google-cloud-platform - 在 AI Platform 上使用 Resnet50 随机在线预测错误 500 和 429
- elasticsearch - Elasticsearch 同义词 - 如何确定优先级?