【问题标题】:Convert a column with array to separate columns using pyspark使用 pyspark 将带有数组的列转换为单独的列
【发布时间】:2022-11-02 03:15:38
【问题描述】:

我有一个这样的数据框

+------------+-----------------+-------------------------------+
| Name       |   Age           | Answers                       |
+------------+-----------------+-------------------------------+
| Maria      | 23              | [apple, mango, orange, banana]| 
| John       | 55              | [apple, orange, banana]       |
| Brad       | 44              | [banana]                      |
+------------+-----------------+-------------------------------+

answers 列包含一个元素数组

预期产出

+------------+-----------------+-------------------------------+
| Name       |   Age           | apple | mango |orange| banana |
+------------+-----------------+-------------------------------+
| Maria      | 23              |  True |  True | True | True   |
| John       | 55              |  True |  False| True | True   |
| Brad       | 44              | False | False | False| True   |
+------------+-----------------+-------------------------------+

有没有办法可以将数组列转换为 True 和 False 列?

提前致谢。

【问题讨论】:

    标签: arrays dataframe apache-spark pyspark


    【解决方案1】:

    如果您事先不知道Answers 数组的所有可能值,您可以求助于以下使用explode + pivot 的解决方案。

    df 
        .withColumn("answer", F.explode("Answers")) 
        .drop("Answers") 
        .groupBy("Name", "Age") 
        .pivot("answer") 
        .agg(F.first("answer").isNotNull()) 
        .na 
        .fill(False)
    

    如果您不知道可能的值,它很重,就像枢轴一样。

    【讨论】:

      猜你喜欢
      • 2019-02-14
      • 2021-10-24
      • 1970-01-01
      • 2021-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多