Python PySpark:从日期列中减去整数列错误:列对象不可调用

Posted

技术标签:

【中文标题】Python PySpark:从日期列中减去整数列错误:列对象不可调用【英文标题】:Python PySpark: Subtract Integer Column from Date Column Error: Column Object not Callable 【发布时间】:2019-01-17 17:46:10 【问题描述】:

我正在使用 PySpark。我有一列是日期数据类型列,另一列是整数数据类型列。

参见下面的示例:

date         subtract
2019-01-08   7
2019-01-04   2

我想创建一个名为“new_date”的新列,它从“日期”列中减去“减去”列值。

下面是我想要的输出:

date         subtract  new_date   
2019-01-08   7         2019-01-01
2019-01-04   2         2019-01-02

我试过下面的代码:

df = df.withColumn('new_date', F.date_sub(df.date, df.subtract))

以下是我得到的错误:TypeError: 'Column' object is not callable

【问题讨论】:

Using a column value as a parameter to a spark DataFrame function的可能重复 查看链接的骗局了解详情。简而言之:您不能将列值用作 API 函数的参数,但一种解决方法是使用 pyspark.sql.functions.expr,例如:df = df.withColumn("new_date", F.expr("date_sub(date, subtract)")) 【参考方案1】:

试试这个:

df.withColumn("new_date", F.expr("date_sub(date, subtract)"))

【讨论】:

以上是关于Python PySpark:从日期列中减去整数列错误:列对象不可调用的主要内容,如果未能解决你的问题,请参考以下文章

如何将工作日中的整数列添加/减去日期时间列?

如何从python中的整数列中获取前4位数字

如何从 Pandas 数据框列中的日期时间减去 3 小时?

从熊猫的日期时间列中减去一年

pyspark - 无法从日期列中获取一年中的季度和一周

如何从 MS SQL 表中具有 MM/DD/YYYY 日期的单个列中减去