如何解决如何编写子字符串以获取从起始位置到末尾的字符串
我想从第25 个位置开始到末尾提取代码。
我尝试过:
df_1.withColumn("code",f.col('index_key').substr(25,f.length(df_1.index_key))).show()
但是我收到以下错误消息,
TypeError: startPos and length must be the same type. Got <class 'int'>
分别:
<class 'pyspark.sql.column.Column'>
任何建议将不胜感激。
解决方法
Using .substr:
将值保留为 lit(<int>)
而不是整数(将是列类型),以便我们传递相同类型的两个值。
Example:
df.show()
#+---------+
#|index_key|
#+---------+
#| abcdef|
#+---------+
from pyspark.sql.functions import *
df.withColumn("code",col("index_key").substr(lit(1),length(col("index_key")))).\
show()
#+---------+-------+
#|index_key| code|
#+---------+-------+
#| abcdefg|abcdefg|
#+---------+-------+
另一种选择是使用 expr
和 substring
功能。
Example:
df.withColumn("code",expr('substring(index_key,1,length(index_key))')).show()
#+---------+------+
#|index_key| code|
#+---------+------+
#| abcdef|abcdef|
#+---------+------+
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。