如何使用.str和.split将pandas代码转换为pyspark

2vuwiymt  于 2021-07-13  发布在  Spark
关注(0)|答案(1)|浏览(391)

我使用pandas编写了以下代码:

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)

但是当我在sparkDataframe上运行它时,我得到以下错误: TypeError: startPos and length must be the same type 我知道我可以把df转换成pandas,运行代码,然后把它转换回spark df,但是我想知道是否有更好的方法?谢谢

sr4lhrrt

sr4lhrrt1#

您可以尝试以下字符串函数:

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')
)

相关问题