我需要添加日期1960-01-01的天数以获得真实的日期值。基于此,我试图做到这一点:
df_immigration_new = df_immigration\
.withColumn('depdate2', F.col('depdate').cast(T.IntegerType()))\
.withColumn('depdate', F.date_add(F.to_date('1960-01-01'), F.col('depdate2')))\
.show(n=1, truncate=False)
但是它给我抛出了一个例外:TypeError: Column is not iterable
。
如果我将F.col('depdate2')
更改为Integer值,则可以使用,但是我不确定如何使用列而不是固定值。
答案 0 :(得分:1)
使用F.date_add()
期望第一个参数为日期,第二个参数为整数,表示要添加到该日期的天数。
您可以使用SQL表达式实现所需的目标:
df.withColumn("new_Date", F.expr("date_add(to_date('1960-01-01'), number_of_days)")).show()
结果:
+----------+--------------+----------+
| date|number_of_days| new_date|
+----------+--------------+----------+
|1960-01-01| 1|1960-01-02|
|1960-01-01| 2|1960-01-03|
+----------+--------------+----------+