Spark Dataframe列,其他列的最后一个字符

mik*_*zel 6 apache-spark apache-spark-sql pyspark pyspark-sql

我正在寻找一种方法来从数据帧列中的字符串中获取最后一个字符并将其放入另一列.

我有一个Spark数据框,如下所示:

    animal
    ======
    cat
    mouse
    snake
Run Code Online (Sandbox Code Playgroud)

我想要这样的东西:

    lastchar
    ========
    t
    e
    e
Run Code Online (Sandbox Code Playgroud)

现在我可以使用看起来像这样的UDF来做到这一点:

    def get_last_letter(animal):
        return animal[-1]

    get_last_letter_udf = udf(get_last_letter, StringType())

    df.select(get_last_letter_udf("animal").alias("lastchar")).show()
Run Code Online (Sandbox Code Playgroud)

我很好奇是否有更好的方法在没有UDF的情况下做到这一点.谢谢!

Ass*_*son 14

只需使用子串函数

from pyspark.sql.functions import substring
df.withColumn("b", substring(col("columnName"), -1, 1))
Run Code Online (Sandbox Code Playgroud)