如何在Pyspark函数中引用包含f字符串的列?
我正在为Spark DF编写一个函数,该函数对列执行操作,并给它们一个后缀,这样我就可以在两个不同的后缀上运行该函数两次,然后将它们连接起来 我一直在寻找引用它们的最佳方式,但是在这段特定的代码中,我想知道我缺少了什么如何在Pyspark函数中引用包含f字符串的列?,pyspark,apache-spark-sql,f-string,Pyspark,Apache Spark Sql,F String,我正在为Spark DF编写一个函数,该函数对列执行操作,并给它们一个后缀,这样我就可以在两个不同的后缀上运行该函数两次,然后将它们连接起来 我一直在寻找引用它们的最佳方式,但是在这段特定的代码中,我想知道我缺少了什么 def calc_date(sdf, suffix): final_sdf = ( sdf.withColumn( f"lowest_days{suffix}", f"sdf.l
def calc_date(sdf, suffix):
final_sdf = (
sdf.withColumn(
f"lowest_days{suffix}",
f"sdf.list_of_days_{suffix}"[0],
)
.withColumn(
f"earliest_date_{suffix}",
f"sdf.list_of_dates_{suffix}"[0],
)
.withColumn(
f"actual_date_{suffix}",
spark_fns.expr(
f"date_sub(earliest_date_{suffix}, lowest_days{suffix})"
),
)
)
在这里,我试图从两个列表中提取第一个值(list\u of_days
和list\u of_dates
),并执行日期计算以创建新变量(actual\u date
)
我想在一个函数中这样做,这样我就不必根据后缀的数量对同一组操作执行两次(或更多)
但是f字符串给出了一个错误列应该是列
在此方面的任何帮助都将不胜感激 您需要用col()来包装第二个参数
嗯,不幸的是,我现在得到了一个错误
无法解析sdf.list_of_days_后缀,在put列list_of_days_后缀中给出
,如果我的回答有帮助,请投赞成票!
from pyspark.sql.functions import *
def calc_date(sdf, suffix):
final_sdf = (
sdf.withColumn(
f"lowest_days{suffix}",
col(f"list_of_days_{suffix}")[0],
)
.withColumn(
f"earliest_date_{suffix}",
col(f"list_of_dates_{suffix}")[0],
)
)