Я написал следующий код, используя панды:

df['last_two'] = df['text'].str[-2:]
df['before_hyphen'] = df['text'].str.split('-').str[0]
df['new_text'] = df['before_hyphen'].astype(str) + "-" + df['last_two'].astype(str)

Но когда я запускаю его на фреймворке Spark, я получаю следующую ошибку:

TypeError: startPos and length must be the same type

Я знаю, что могу просто преобразовать df в pandas, запустить код, а затем преобразовать его обратно в искровой df, но мне интересно, есть ли способ лучше? Спасибо

0
Pistol Pete 11 Фев 2021 в 21:20

1 ответ

Лучший ответ

Вы можете попробовать следующие строковые функции:

import pyspark.sql.functions as F

df2 = df.withColumn(
    'last_two', F.expr('substring(text, -2)')
).withColumn(
    'before_hyphen', F.substring_index('text', '-', 1))
).withColumn(
    'new_text', F.concat_ws('-', 'before_hyphen', 'last_two')
)

1
mck 11 Фев 2021 в 18:44