gpt4 book ai didi

python - 从 PySpark 中的 Dataframe 列获取最后/分隔值

转载 作者:行者123 更新时间:2023-12-05 01:27:09 24 4
gpt4 key购买 nike

我正在尝试获取“/”之后的最后一个字符串。

列可以是这样的:"lala/mae.da/rg1/zzzzz"(不需要只有 3/),我想返回:zzzzz

在 SQL 和 Python 中这很容易,但我想知道在 PySpark 中是否有办法做到这一点。

用 Python 解决:

original_string = "lala/mae.da/rg1/zzzzz"
last_char_index = original_string.rfind("/")
new_string = original_string[last_char_index+1:]

或直接:

new_string = original_string.rsplit('/', 1)[1]

在 SQL 中:

RIGHT(MyColumn, CHARINDEX('/', REVERSE(MyColumn))-1)

对于 PySpark,我的想法是这样的:

df = df.select(col("MyColumn").rsplit('/', 1)[1])

但我收到以下错误:TypeError: 'Column' object is not callable 而且我什至不确定 Spark 是否允许我执行 rsplit。

您对我如何解决这个问题有什么建议吗?

最佳答案

尽管@Pav3k 的回答很好,但还是添加了另一个解决方案。 element_at从列表中获取特定位置的项目:

from pyspark.sql import functions as F
df = df.withColumn('my_col_split', F.split(df['MyColumn'], '/'))\
.select('MyColumn',F.element_at(F.col('my_col_split'), -1).alias('rsplit')
)

>>> df.show(truncate=False)

+---------------------+------+
|MyColumn |rsplit|
+---------------------+------+
|lala/mae.da/rg1/zzzzz|zzzzz |
|fefe |fefe |
|fe/fe/frs/fs/fe32/4 |4 |
+---------------------+------+

使用了 Pav3k 的 DF

关于python - 从 PySpark 中的 Dataframe 列获取最后/分隔值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69752729/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com