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

时间:2017-08-04 17:56:30

标签: apache-spark pyspark apache-spark-sql pyspark-sql

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

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

    animal
    ======
    cat
    mouse
    snake

我想要这样的事情:

    lastchar
    ========
    t
    e
    e

现在我可以使用看起来像这样的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()

如果没有UDF有更好的方法,我很好奇。谢谢!

2 个答案:

答案 0 :(得分:12)

只需使用子字符串函数

from pyspark.sql.functions import substring
df.withColumn("b", substring(col("columnName"), -1, 1))

答案 1 :(得分:2)

一种方法是使用Column substr()函数:

df = df.withColumn("lastchar", df.animal.substr(-1,1))

参见文档: https://spark.apache.org/docs/2.1.0/api/python/pyspark.sql.html#pyspark.sql.Column.substr