首页 文章

将数组<string>转换为字符串pyspark数据帧

提问于
浏览
2

我有一个pyspark数据框,其中一些列包含字符串数组(一列包含嵌套数组) . 因此,我无法将数据帧写入csv .

以下是我正在处理的数据框的示例 -

+-------+--------------------+---------+
    |ID     |             emailed| clicked
    +-------+--------------------+---------+
    |9000316|[KBR, NRT, AOR]     |[[AOR]]  
    |9000854|[KBR, NRT, LAX]     | Null 
    |9001996|[KBR, JFK]          |[[JFK]] 
    +-------+--------------------+---------+

我想得到以下结构,保存为csv .

+-------+--------------------+---------+
    |ID     |             emailed| clicked
    +-------+--------------------+---------+
    |9000316|KBR, NRT, AOR       | AOR  
    |9000854|KBR, NRT, LAX       | Null 
    |9001996|KBR, JFK            | JFK 
    +-------+--------------------+---------+

我对pyspark很新 . 非常感谢您的帮助 . 谢谢!

1 回答

  • 4

    你能这样试试吗?您必须导入该模块

    import pyspark.sql.functions.*
    df.select(concat_ws(',', split(df.emailed)).alias('string_form')).collect()
    

    如果有帮助,请告诉我 .

    -----更新----

    代码在链接中解释,我修改了一下 .

    from pyspark.sql.functions import *
    from pyspark.sql.types import *
    
    def getter(column):
    
        for i,col in enumerate(column):
            if i==1:
               col_new=col
            else:
               col_new=col_new+','+col
        return col_new
    
    getterUDF = udf(getter, StringType())
    
    df.select(getterUDF(Ur_Array_Column))
    

    你也可以试试这个 .

相关问题