gpt4 book ai didi

python - PySpark 数据框中的日期差异

转载 作者:行者123 更新时间:2023-12-05 08:22:28 25 4
gpt4 key购买 nike

我来自 Pandas 背景并且是 Spark 的新手。我有一个数据框,其中有 iddobage 作为列。我想从他的 dob 获取用户的年龄(在某些情况下 age 列为 NULL)。

+----+------+----------+
| 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 |
+----+------+----------+

我想要一个新列,它将根据 dob 和当前日期计算年龄。

我试过了,但没有得到任何结果:

df.withColumn("diff", 
datediff(to_date(lit("01-06-2020")),
to_date(unix_timestamp('dob', "dd-MM-yyyy").cast("timestamp")))).show()

最佳答案

您需要计算日期差异并将结果转换为年份,如下所示:

df.withColumn('diff', 
when(col('age').isNull(),
floor(datediff(current_date(), to_date(col('dob'), 'M/d/yyyy'))/365.25))\
.otherwise(col('age'))).show()

产生:

+---+----+--------+----+
| id| age| dob|diff|
+---+----+--------+----+
| 1| 24| null| 24|
| 2| 25| null| 25|
| 3|null|1/1/1973| 47|
| 4|null|6/6/1980| 39|
| 5| 46| null| 46|
| 6|null|1/1/1971| 49|
+---+----+--------+----+

它保留非空的 age 列,并计算 dobage 为空的今天之间的差异(以天为单位)。然后将结果转换为年(除以 365.25;您可能想确认这一点)然后 floored。

关于python - PySpark 数据框中的日期差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62148704/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com