【发布时间】:2022-01-17 21:11:15
【问题描述】:
我正在尝试通过减去两个现有列的值来向 pyspark df 添加一个新列。
我已经有一个可用的date_of_birth 列,所以我插入了一个current_date 列,代码如下:
import datetime
currentdate = "14-12-2021"
day,month,year = currentdate.split('-')
today = datetime.date(int(year),int(month),int(day))
df= df.withColumn("current_date", lit(today))
显示我的 df 确认它有效。看起来有点像这样:
| id | date_of_birth | current_date |
|---|---|---|
| 01 | 1995-01-01 | 2021-12-2021 |
| 02 | 1987-02-16 | 2021-12-2021 |
我通过减去date_of_birth 和current_date 的值插入了age 列。
df = df.withColumn('age', (df['current_date'] - df['date_of_birth ']))
单元运行没有问题。
这就是我卡住的地方:
一旦我尝试再次显示我的数据框以验证一切顺利,就会出现以下错误:
'无法解析数据类型:区间'
我使用 df.types() 检查发生了什么,显然我新插入的 age 列属于区间类型。
我该如何解决这个问题?
在这种特殊情况下,有没有办法以岁数 (int) 显示年龄?
PS:date_of_birth 和 current_date 列都有 date 类型。
【问题讨论】: