N. *_* P. 3 apache-spark apache-spark-sql pyspark
如果我有一个包含两列的 PySpark DataFrame,text并且subtext,则 subtext保证会出现在 中的某个位置text。subtext我将如何计算在列中的位置text?
输入数据:
+---------------------------+---------+
| text | subtext |
+---------------------------+---------+
| Where is my string? | is |
| Hm, this one is different | on |
+---------------------------+---------+
Run Code Online (Sandbox Code Playgroud)
预期输出:
+---------------------------+---------+----------+
| text | subtext | position |
+---------------------------+---------+----------+
| Where is my string? | is | 6 |
| Hm, this one is different | on | 9 |
+---------------------------+---------+----------+
Run Code Online (Sandbox Code Playgroud)
注意:我可以使用静态文本/正则表达式来执行此操作,没有问题,但我无法找到任何使用特定于行的文本/正则表达式执行此操作的资源。
您可以使用locate。您需要减去 1,因为字符串索引从 1 开始,而不是 0。
import pyspark.sql.functions as F
df2 = df.withColumn('position', F.expr('locate(subtext, text) - 1'))
df2.show(truncate=False)
+-------------------------+-------+--------+
|text |subtext|position|
+-------------------------+-------+--------+
|Where is my string? |is |6 |
|Hm, this one is different|on |9 |
+-------------------------+-------+--------+
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17383 次 |
| 最近记录: |