首页 > 解决方案 > 日期之间的任何差异都超过阈值

问题描述

我有一个 pandas 数据框列,其中每一行都包含一个日期列表。我想创建一个标志来标识列表中的任何日期是否与“任何”其他日期相隔 7 天

例如

list = ['2019-10-22','2019-10-24','2019-10-29']

这应该导致错误,因为最后一个(元素)日期与至少一个其他日期相距超过 7 天

这种情况在数据框的每一行都重复

谢谢

标签: pythonpandasdatetime

解决方案


一种方法是 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天以上,您可以根据需要调整解决方案。


推荐阅读