计算时间戳和字符串之间的pyspark月差异

我正在使用带有JSON文件的数据块中的pyspark清理数据。 eval括号中的表达式来自JSON文件。

我面临的问题之一是操纵timestamp s / string

我试图找出时间戳列和单个日期(是字符串)之间的月份差异

请参见下面的代码。

import pyspark.sql.functions as F
df2 = df2.withColumn('test',eval("months_between( F.to_date(F.col('period_name')),lit('31/03/2019'))"))

它不会引发错误,但求值为空。

xinandjsl0305 回答:计算时间戳和字符串之间的pyspark月差异

Using eval is bad practice.在这种情况下,我认为不需要它。

您可以保持灵活性,而可以使用pyspark.sql.functions.exprjson文件中读取查询

df2 = df2.withColumn(
    'test',expr("months_between(to_date(period_name),to_date('31/03/2019','dd/MM/yyyy'))")
)
,

只需将您的eval查询更改为:

df2 = df2.withColumn('test',eval("months_between(F.to_date(F.col('period_name')),F.to_date(F.lit('31/03/2019'),'dd/MM/yyyy'))"))

这也应该将文字字符串列也转换为datetype。

如果您的date字符串不是yyyy-MM-dd,则需要指定格式。

本文链接:https://www.f2er.com/3145512.html

大家都在问