gpt4 book ai didi

python - 如何在 Spark SQL (Dataframes) 中拉取数组的切片?

转载 作者:太空宇宙 更新时间:2023-11-03 11:23:54 26 4
gpt4 key购买 nike

我有一列包含拆分的 http 请求的数组。我将它们过滤为两种可能性之一:

|[, courses, 27381...|
|[, courses, 27547...|
|[, api, v1, cours...|
|[, api, v1, cours...|
|[, api, v1, cours...|
|[, api, v1, cours...|
|[, api, v1, cours...|
|[, api, v1, cours...|
|[, api, v1, cours...|
|[, api, v1, cours...|
|[, courses, 33287...|
|[, courses, 24024...|

在这两种数组类型中,从“类(class)”开始是相同的数据和结构。

我想使用 case 语句获取数组的切片,如果数组的第一个元素是“api”,则获取元素 3 -> 数组的末尾。我试过使用 Python 切片语法 [3:] 和普通的 PostgreSQL 语法 [3, n] where n 是数组的长度。如果它不是'api',那么只取给定的值。

我理想的最终结果是一个数组,其中每一行共享相同的结构,第一个索引中包含类(class),以便从该点开始更容易解析。

最佳答案

只需定义一个UDF 就非常简单,您创建了一个very similar question previously。所以我不会发布确切的答案让你思考和学习(为了你好)。

from pyspark.sql.functions import udf

df = sc.parallelize([(["ab", "bs", "xd"],), (["bc", "cd", ":x"],)]).toDF()

getUDF = udf(lambda x, y: x[1:] if x[y] == "ab" else x)

df.select(getUDF(col("_1"), lit(0))).show()

+------------------------+
|PythonUDF#<lambda>(_1,0)|
+------------------------+
| [bs, xd]|
| [bc, cd, :x]|
+------------------------+

关于python - 如何在 Spark SQL (Dataframes) 中拉取数组的切片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37736409/

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