如何在Pyspark函数中引用包含f字符串的列?

如何在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

我正在为Spark DF编写一个函数,该函数对列执行操作,并给它们一个后缀,这样我就可以在两个不同的后缀上运行该函数两次,然后将它们连接起来

我一直在寻找引用它们的最佳方式,但是在这段特定的代码中,我想知道我缺少了什么

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],
        )
    )