我来自Pandas的背景和新的Spark。我有一个Dataframe id
, dob
, age
作为列。我想从用户的dob(在某些情况下)中得到用户的年龄 age
列为空)。
+----+------+----------+
| id | age | dob |
+----+------+----------+
| 1 | 24 | NULL |
| 2 | 25 | NULL |
| 3 | NULL | 1/1/1973 |
| 4 | NULL | 6/6/1980 |
| 5 | 46 | |
| 6 | NULL | 1/1/1971 |
+----+------+----------+
我想要一个新的列,将计算年龄从出生日期和当前日期。
我试过下面的东西,但没有得到任何结果
df.withColumn("diff",
datediff(to_date(lit("01-06-2020")),
to_date(unix_timestamp('dob', "dd-MM-yyyy").cast("timestamp")))).show()
2条答案
按热度按时间l7wslrjt1#
您需要计算日期差并将结果转换为年份,如下所示:
产生:
它保存了
age
列,其中不为null并计算dob
今天在哪里age
为空。然后将结果转换为年(除以365.25;你可能要确认这一点)然后floor
预计起飞时间。kmbjn2e32#
我认为使用
months_between
当涉及到year difference
. 我们应该使用datediff
只有在你需要的时候difference in days
###接近-查找年龄
绕到
0
如果你想用整数表示年龄