python - 检查 python 日期列表中的任何日期是否在两个日期列之间

标签 python pandas date pyspark

我有一个包含两列的数据框。一个是 START_DATE,一个是 END_DATE。我还有一个 python 日期列表。我想要数据框中的第三列,指示我的 python 列表中的任何日期是否落在每个特定行的数据框中的 START_DATE 和 END_DATE 之间。如果日期列表中的日期介于 START_DATE 和 END_DATE 之间,则第三列应显示为真。

dates_list = ['2019-01-06', '2019-04-08']

START_DATE|END_DATE|
____________________
2019-01-01|2019-01-12
2019-01-03|2019-01-05
2019-04-03|2019-04-09

我想要第三列显示

TRUE
FALSE
TRUE

在 pyspark 中使用会很棒,但 pandas 也可以。

最佳答案

这可以使用 pd.IntervalIndex 来完成.让我们从将所有日期转换为日期时间开始:

from datetime import datetime
df = df.apply(pd.to_datetime)
dates = [datetime.strptime(x, '%Y-%m-%d') for x in dates_list]

现在让我们使用它的 from_arrays 构建一个 pd.IntervalIndex方法,并检查哪些区间包含 any使用列表理解从列表中获取日期:

ix = pd.IntervalIndex.from_arrays(df['START_DATE'],df['END_DATE'],closed='both')
[any(date in i for date in dates) for i in ix]
# [True, False, True]

关于python - 检查 python 日期列表中的任何日期是否在两个日期列之间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56992916/

相关文章:

python - Pandas DataFrame分组生成数值多索引

mysql - 如何防止 JSON.stringify() 更改日期?

python - 如何获取条件成立的二维数组分段的开始和结束

python - 添加到 tarfile 的文件返回为空文件

python - 一次替换 Pandas Series 的多个子字符串

python - 特定行 Pandas 数据框的总和

python - 合并具有重叠列的数据框

Python 2.7.5 - 同时运行多个线程而不会减慢

可以处理重复的不规则时间序列的滚动窗口函数

mysql - 如果没有记录,我怎么能算作 0?