【问题标题】:PySpark - converting single element arrays/lists to stringPySpark - 将单元素数组/列表转换为字符串
【发布时间】:2020-07-02 18:32:28
【问题描述】:

假设我有一个这样的 df:

   id  type  length  key1             key2     key3
0  1   A     144     [value1,value2]  value3
1  1   B     20      value4           [value5]
2  4   A     54                                [value6]

在 PySpark 中有没有办法让我从列表中获取 value5 和 value6,因为它们是唯一的元素?我想将此应用于所有单元格。输出将是:

   id  type  length  key1             key2     key3
0  1   A     144     [value1,value2]  value3
1  1   B     20      value4           value5
2  4   A     54                                value6

【问题讨论】:

  • 能否请您试一试答案

标签: python list dataframe pyspark


【解决方案1】:
    Df= df.withColumn('key3', F.when(F.size('key3) ==1),F.col('key3').getItem(1)  ).when(F.size('column_2) ==1),F.col('column_2').getItem(1))
 .otherwise ('key3')

你可以像这样继续添加条件

.when(F.size('col_2) ==1),F.col('col_2').getItem(1)) 

首先您需要找到数组的大小,如果找到 1 则获取第一个元素。我是通过手机回复的,请试一试,我相信应该可以的

【讨论】:

  • 这仅适用于一列。另外,F 是什么?
  • 我想将它应用到数据框中的所有单元格。
  • 要获取F,请运行import pyspark.sql.functions as F
  • 如果它符合目的,请您批准答案..提前谢谢
  • @dsk 我没有,抱歉。另外,有没有办法轻松地将其应用于整个 df?有很多列。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-08
  • 1970-01-01
  • 1970-01-01
  • 2012-01-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多