aki*_*t90 2 python apache-spark pyspark
与以下内容密切相关:Spark Dataframe列,其他列的最后一个字符,
但我想从-1索引中提取多个字符.
我有以下pyspark数据帧 df
+----------+----------+
| number|event_type|
+----------+----------+
|0342224022| 11|
|0112964715| 11|
+----------+----------+
Run Code Online (Sandbox Code Playgroud)
我想从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|
+----------------------+----------+
Run Code Online (Sandbox Code Playgroud)
以下是预期的输出(我不确定上面的输出是什么):
+----------------------+----------+
|substring(number,-1,3)|event_type|
+----------------------+----------+
| 022| 11|
| 715| 11|
+----------------------+----------+
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
注意: Spark版本1.6.0
这是你如何使用substring.你的位置是-3,长度是3.
pyspark.sql.functions.substring(str, pos, len)
Run Code Online (Sandbox Code Playgroud)
您需要将子字符串函数调用更改为:
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|
#+------------------------+----------+
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5378 次 |
| 最近记录: |