from datetime import timedelta, date
def daterange(date1, date2):
for n in range(int ((date2 - date1).days)+1):
yield date1 + timedelta(n)
start_dt = date(2015, 12, 20)
end_dt = date(2016, 1, 11)
for dt in daterange(start_dt, end_dt):
print(dt.strftime("%Y-%m-%d"))
我具有如上所述的日期范围,但是从该日期范围中我可以忽略的日期很少。这些日期在数据框中。如何从这些日期范围中取出这些日期。任何人请提出建议。具有不同日期的数据框如下。
Pardata = spark.read.parquet("/mnt/Test/data.parquet")
Pardata.createOrReplaceTempView("parfile")
ParRes = spark.sql("SELECT distinct date FROM parfile ")
答案 0 :(得分:1)
使用left_anti
连接:
dates = [[dt.strftime("%Y-%m-%d")] for dt in daterange(start_dt, end_dt)]
dates_df = spark.createDataFrame(dates, ["date"])
dates_df.join(ParRes, dates_df("date") === ParRes("date"), "left_anti").show()
首先,从该日期范围创建一个DataFrame dates_df
。然后使用left_anti
联接,该联接根据键ParRes
从dates_df
数据框中的date
数据框中过滤出日期。