Ho un frame di dati con un campo di tipo timestamp - RECEIPTDATEREQUESTED:timestamp Per qualche motivo, ci sono le date che sono meno di 1900-01-01. Non voglio questi, quello che voglio fare, è per ogni valore nella colonna del dataframe in cui il RECEIPTDATEREQUESTED<'1900-01-01 00:00:00', quindi impostare il timestamp per 1900-01-01 o null. Ho provato un paio di modi per fare questo, ma sembra che alcune più semplici, deve esistere. Ho pensato a qualcosa come questo potrebbe funzionare, ma
import datetime
def testdate(date_value):
oldest = datetime.datetime.strptime('1900-01-01 00:00:00', '%Y-%m-%d')
try:
if (date_value < oldest):
return oldest
else:
return date_value
except ValueError:
return oldest
udf_testdate = udf(lambda x:testdate(x),TimestampType())
bdf = olddf.withColumn("RECEIPTDATEREQUESTED",udf_testdate(col("RECEIPTDATEREQUESTED")))