2017-08-04 36 views
1

我正在尋找一種方法從數據幀列中的字符串中獲取最後一個字符,並將其放入另一列。帶有其他列的最後一個字符的Spark Dataframe列

我有一個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。謝謝!

回答

7

通過使用列SUBSTR()函數只需使用字符串函數

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

完美。我沒有想過爲子串嘗試一個負數。謝謝! – mikestaszel

+0

有沒有辦法讓一切,但第一個和最後一個字符? 'df.withColumn( 「B」,子串(COL( 「COLUMNNAME」),1,-1))'不起作用。 – citynorman

+0

@citynorman你可以嘗試使用regex_extract通過正則表達式來得到它。子需要的元素的恆定數量(-1特技可用於開始位置,而不是長度) –

相關問題