我有一个包含两列的数据框。一个是 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/