与:Spark Dataframe column with last character of other column 密切相关,但我想从-1
索引中提取多个字符。
我有下面的pyspark df
+----------+----------+
| number|event_type|
+----------+----------+
|0342224022| 11|
|0112964715| 11|
+----------+----------+
我想从number
列的最后一个索引中提取3个字符。
我尝试了以下几点:
from pyspark.sql.functions import substring
df.select(substring(df['number'], -1, 3), 'event_type').show(2)
# which returns:
+----------------------+----------+
|substring(number,-1,3)|event_type|
+----------------------+----------+
| 2| 11|
| 5| 11|
+----------------------+----------+
下面是预期的输出(我不确定上面的输出是什么):
+----------------------+----------+
|substring(number,-1,3)|event_type|
+----------------------+----------+
| 022| 11|
| 715| 11|
+----------------------+----------+
我做错了什么?
注:火花1.6.0版
发布于 2018-04-12 01:58:22
这就是您使用substring
的方式。你的位置是-3,长度是3。
pyspark.sql.functions.substring(str, pos, len)
您需要将子字符串函数调用更改为:
from pyspark.sql.functions import substring
df.select(substring(df['number'], -3, 3), 'event_type').show(2)
#+------------------------+----------+
#|substring(number, -3, 3)|event_type|
#+------------------------+----------+
#| 022| 11|
#| 715| 11|
#+------------------------+----------+
发布于 2021-12-23 12:09:00
这也可以通过SQL代码来完成,这要归功于"expr“函数:
from pyspark.sql.functions import expr
df.select(expr('RIGHT(number, 3) AS substring'), 'event_type').show(2)
https://stackoverflow.com/questions/49793479
复制