【问题标题】:How to select a Pyspark column and append it as new rows in the data frame?如何选择 Pyspark 列并将其作为新行附加到数据框中?
【发布时间】:2019-12-29 17:40:04
【问题描述】:

我有一个 JSON 文件,我想做一些 ETL 任务。 我想提取一列并将其值附加为数据框中的新行。 例如,如果我有这样的数据框:

-----------------------------------------------------------------
|name    |    last    |                  father                 |
-----------------------------------------------------------------
| daniel |  allardice | {'name': 'george', 'last': 'allardice'} |
-----------------------------------------------------------------

我想把它变成:

----------------------------
|    name    |    last     |
----------------------------
|   daniel   |  allardice  |
----------------------------
|   george   |  allardice  |
----------------------------

如何在 PySpark 中通过 UDF 执行此操作?

【问题讨论】:

    标签: apache-spark pyspark pyspark-sql pyspark-dataframes


    【解决方案1】:

    你可以试试下面的代码

    from pyspark.sql import functions as F
    
    df_1 = df.select("name","last");
    
    df_2 = df.select(F.col('father').getItem('name').alias('name'), F.col('father')['last'].alias('last'));
    
    result = df_1.union(df_2);
    

    【讨论】:

    • 谢谢。如果不是 JSON 而是 Row() 类型,我该怎么办?
    猜你喜欢
    • 2018-02-03
    • 1970-01-01
    • 2020-11-04
    • 2021-11-07
    • 1970-01-01
    • 2018-07-15
    • 1970-01-01
    • 2019-01-22
    • 1970-01-01
    相关资源
    最近更新 更多