web-dev-qa-db-ja.com

Spark他の列の最後の文字を持つデータフレーム列

データフレーム列の文字列から最後の文字を取得して別の列に配置する方法を探しています。

私は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なしでこれを行うより良い方法があるかどうか、私は主に気になります。ありがとう!

8
mikestaszel

部分文字列関数を使用するだけです

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

1つの方法は、列の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

3
osbon123