Pyspark: как добавить десять дней в существующий столбец даты

У меня есть фрейм данных в Pyspark со столбцом даты под названием «report_date».

Я хочу создать новый столбец с названием «report_date_10», который будет добавлен на 10 дней к исходному столбцу report_date.

Ниже приведен код, который я пробовал:

df_dc["report_date_10"] = df_dc["report_date"] + timedelta(days=10)

Это ошибка, которую я получил:

AttributeError: объект datetime.timedelta не имеет атрибута _get_object_id

Помощь! Спасибо


person PineNuts0    schedule 05.06.2018    source источник
comment
Как это сделать, по сути, является примером, приведенным в как создавать хорошие воспроизводимые примеры фреймов данных Apache Spark.   -  person pault    schedule 05.06.2018


Ответы (1)


Похоже, вы используете синтаксис pandas для добавления столбца; Для Spark вам нужно использовать withColumn, чтобы добавить новый столбец; Для добавления даты есть встроенная функция date_add:

import pyspark.sql.functions as F
df_dc = spark.createDataFrame([['2018-05-30']], ['report_date'])

df_dc.withColumn('report_date_10', F.date_add(df_dc['report_date'], 10)).show()
+-----------+--------------+
|report_date|report_date_10|
+-----------+--------------+
| 2018-05-30|    2018-06-09|
+-----------+--------------+
person Psidom    schedule 05.06.2018