如何在 Pyspark 数据框中查询字典格式列

艾伦

有以下数据框:

  >>> df.printSchema()
  root
   |-- I: string (nullable = true)
   |-- F: string (nullable = true)
   |-- D: string (nullable = true)
   |-- T: string (nullable = true)
   |-- S: string (nullable = true)
   |-- P: string (nullable = true)

F列是字典格式:

   {"P1":"1:0.01","P2":"3:0.03,4:0.04","P3":"3:0.03,4:0.04",...}

我需要按如下方式阅读 F 列并创建两个新列 P 和 N

   P1 => "1:0.01"
   P2 => "3:0.03,4:0.04"
   and so on

 +--------+--------+-----------------+-----+------+--------+----+
 | I      |  P     | N               |  D  | T    | S      | P  |
 +--------+--------+---------------- +------------+--------+----+
 | i1     |  p1    | 1:0.01          |  d1 | t1   | s1     | p1 |
 |--------|--------|-----------------|-----|------|--------|----|
 | i1     |  p2    | 3:0.03,4:0.04   |  d1 | t1   | s1     | p1 |
 |--------|--------|-----------------|-----|------|--------|----|
 | i1     |  p3    | 3:0.03,4:0.04   |  d1 | t1   | s1     | p1 |
 |--------|--------|-----------------|-----|------|--------|----|
 | i2     |  ...   | ....            |  d2 | t2   | s2     | p2 |
 +--------+--------+-----------------+-----+------+--------+----+

Pyspark 有什么建议吗?

艾伦

最后我是这样解决的:

 #This method replaces "," with ";" to 
 #distinguish between other camas in the string to split it
 def _comma_replacement(val):
    if (val):
        val = val.replace('","', '";"').replace('{','').replace('}', '')
    return val

replacing = UserDefinedFunction(lambda x: _comma_replacement(x))
new_df = df.withColumn("F", replacing(col("F")))
new_df = new_df.withColumn("F",split(col("F"),";").cast(ArrayType(StringType())))
exploded_df = new_df.withColumn("F", explode("F"))
df_sep = exploded_df.withColumn("F",split(col("F"),'":"').cast(ArrayType(StringType())))
dff = df_sep.withColumn("P", df_sep["F"].getItem(0))
dff_new = dff.withColumn("N", dff["F"].getItem(1))
dff_new = dff_new.drop('F')

使用另一个 UDF,我删除了字符串操作期间剩余的额外字符。

上面的解决方案也采用了同样的方式。关键思想是区分不同组件之间及其内部的逗号。为此,我建议在 UDF 中调用 _comma_replacement(val) 方法。上述解决方案也使用了相同的方法,但使用了可以更加优化的 regxp_replace。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在pyspark中创建具有两个数据框列的字典?

来自分类Dev

如何在Pyspark的数据框中删除utf格式并将列从字符串转换为Integer

来自分类Dev

如何在pyspark数据帧中创建嵌套字典

来自分类Dev

如何在pyspark数据框中读取protoBuffer .pb文件?

来自分类Dev

如何在pyspark中重命名数据框的列名?

来自分类Dev

如何在Pyspark数据框中的轴= 1上连接ArrayType的2列?

来自分类Dev

如何在pyspark数据框中创建具有列表值总和的列

来自分类Dev

如何在pyspark数据框列中检测模式何时更改

来自分类Dev

如何在Pyspark数据框的特定行中定位特定列?

来自分类Dev

如何从 pyspark 中的数据框中获取满足条件的列?

来自分类Dev

如何从pyspark的数据框中删除空列

来自分类Dev

如何从 Pyspark 数据框中的列表值创建列

来自分类Dev

Pyspark:如何遍历数据框列?

来自分类Dev

如何在pyspark中将嵌套字典转换为数据帧?

来自分类Dev

如何在Pyspark中将数据分成组

来自分类Dev

如何在pyspark中转置数据帧?

来自分类Dev

如何在pySpark数据框中添加一个新列,该列包含计数大于0的列值?

来自分类Dev

如何在PySpark中读取Avro文件

来自分类Dev

如何在pyspark中获取Python库?

来自分类Dev

如何在pyspark脚本中访问SparkContext

来自分类Dev

如何在pyspark中拆除CLOB?

来自分类Dev

如何在PySpark中运行.sql文件

来自分类Dev

如何在PySpark中编码DateTime值?

来自分类Dev

如何在pyspark中处理异常?

来自分类Dev

如何在Pyspark中编写循环或情节

来自分类Dev

如何在pyspark中应用功能?

来自分类Dev

如何在pyspark中获得模型的预测

来自分类Dev

如何在PyCharm中安装pyspark插件

来自分类Dev

如何在pyspark中设置pivotMaxValues?

Related 相关文章

  1. 1

    如何在pyspark中创建具有两个数据框列的字典?

  2. 2

    如何在Pyspark的数据框中删除utf格式并将列从字符串转换为Integer

  3. 3

    如何在pyspark数据帧中创建嵌套字典

  4. 4

    如何在pyspark数据框中读取protoBuffer .pb文件?

  5. 5

    如何在pyspark中重命名数据框的列名?

  6. 6

    如何在Pyspark数据框中的轴= 1上连接ArrayType的2列?

  7. 7

    如何在pyspark数据框中创建具有列表值总和的列

  8. 8

    如何在pyspark数据框列中检测模式何时更改

  9. 9

    如何在Pyspark数据框的特定行中定位特定列?

  10. 10

    如何从 pyspark 中的数据框中获取满足条件的列?

  11. 11

    如何从pyspark的数据框中删除空列

  12. 12

    如何从 Pyspark 数据框中的列表值创建列

  13. 13

    Pyspark:如何遍历数据框列?

  14. 14

    如何在pyspark中将嵌套字典转换为数据帧?

  15. 15

    如何在Pyspark中将数据分成组

  16. 16

    如何在pyspark中转置数据帧?

  17. 17

    如何在pySpark数据框中添加一个新列,该列包含计数大于0的列值?

  18. 18

    如何在PySpark中读取Avro文件

  19. 19

    如何在pyspark中获取Python库?

  20. 20

    如何在pyspark脚本中访问SparkContext

  21. 21

    如何在pyspark中拆除CLOB?

  22. 22

    如何在PySpark中运行.sql文件

  23. 23

    如何在PySpark中编码DateTime值?

  24. 24

    如何在pyspark中处理异常?

  25. 25

    如何在Pyspark中编写循环或情节

  26. 26

    如何在pyspark中应用功能?

  27. 27

    如何在pyspark中获得模型的预测

  28. 28

    如何在PyCharm中安装pyspark插件

  29. 29

    如何在pyspark中设置pivotMaxValues?

热门标签

归档