我有一个名为" pd_df"。
的pandas数据框我想修改它的专栏,所以我做了类似的事情:
import pandas as pd
pd_df['notification_dt'] = pd.to_datetime(pd_df['notification_dt'], format="%Y-%m-%d")
有效。
在同一个数据库中,我创建了一个名为" spark_df"
的火花数据帧我想在它的列上执行相同的功能(pd.to_datatime)来执行相同的操作。所以我这样做了。
from pyspark.sql.functions import UserDefinedFunction
from pyspark.sql.types import TimestampType
udf = UserDefinedFunction(lambda x: pd.to_datetime(x, format="%Y-%m-%d"), TimestampType())
spark_df2 = spark_df.withColumn("notification_dt1", (udf(spark_df["notification_dt"])))
据我所知它应该有用。但是
spark_df.show()
一分钟后我遇到以下错误:
答案 0 :(得分:3)
所以,修好了。
udf = UserDefinedFunction(lambda x: pd.to_datetime(x, format="%Y-%m-%d"), TimestampType())
应该是
udf = UserDefinedFunction(lambda x: str(pd.to_datetime(x, format="%Y-%m-%d")), TimestampType())
基本上无法将结果转换为TimestampType()