wba*_*rts 6 python date pandas pyspark
我有一个包含两列的数据框。一种是 START_DATE,另一种是 END_DATE。我还有一个 python 日期列表。我想要数据框中的第三列指示 python 列表中的任何日期是否位于数据框中每个特定行的 START_DATE 和 END_DATE 之间。如果日期列表中存在介于 START_DATE 和 END_DATE 之间的日期,则第三列应显示 true。
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.date_range和 set 的交集技术来检查日期是否存在
df = pd.DataFrame(data={"start_date":["2019-01-01","2019-01-03","2019-04-03"],
                       "end_date":["2019-01-12","2019-01-05","2019-04-09"]})
dates_list = ['2019-01-06', '2019-04-08']
def creating_dates(row,date_list):
    dates = list(pd.date_range(start=row['start_date'], end=row['end_date']).astype(str))
    res = set(dates).intersection(set(date_list))
    if res:
        return True
    return False
df['check_exist'] = df.apply(lambda x:creating_dates(x,dates_list),axis=1)
   start_date   end_date    check_exist
0   2019-01-01  2019-01-12  True
1   2019-01-03  2019-01-05  False
2   2019-04-03  2019-04-09  True