Mám datový rámec s pole časového razítka - RECEIPTDATEREQUESTED:časové razítko Z nějakého důvodu, tam jsou data, která jsou méně než 1900-01-01. Nechci to, co chci udělat, je pro každou hodnotu ve sloupci datovém kde RECEIPTDATEREQUESTED<'1900-01-01 00:00:00', pak nastavte časové razítko buď 1900-01-01 nebo null. Já jsem se snažil několik způsobů, jak to udělat, ale zdá se, trochu víc jednoduché, musí existovat. Myslel jsem, že něco takového by mohlo fungovat, ale
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")))