【问题标题】:How to extract elements from a column of arrays and store these elements in a new dataframe in pyspark?如何从数组列中提取元素并将这些元素存储在pyspark的新数据框中?
【发布时间】:2021-11-27 02:21:06
【问题描述】:

假设我有一列这样的数组:

column_x
[1,5,[],[2,3,22,42,3,-5]]
[1,5,[],[-3,67,32,2,2.14,5]]
[1,5,[],[32,1,3,34,6.7,90]]

我想在每一行中提取数组的第四个元素,并将这些元素分成不同的列,如下所示:

column1 column2 column3 column4 column5 column6
2       3       22      42      3       -5
-3      67      32      2       2.14     5
32      1       3       34      6.7      90

我尝试使用 getItem() 函数,但它不起作用。我不完全确定我是否正确使用它。

【问题讨论】:

  • 你的数据架构是什么?
  • root |-- scaledFeatures: 向量 (nullable = true)
  • 对于稀疏向量,您需要 UDF 来访问值,以 this answer 为例

标签: arrays dataframe pyspark split


【解决方案1】:

从 Spark 3.0.0 开始你可以使用vector_to_array

https://spark.apache.org/docs/latest/api/python/reference/api/pyspark.ml.functions.vector_to_array.html

由于您嵌套了一个数组,因此您可能需要使用它两次。

【讨论】:

    猜你喜欢
    • 2017-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-06
    • 1970-01-01
    相关资源
    最近更新 更多