将列表转换为pyspark中的数据框列

阿文德·坎达斯瓦米(Arvind Kandaswamy)

我有一个数据框,其中的字符串类型列之一包含要爆炸的项目列表,并使之成为父数据框的一部分。我该怎么做?

这是创建示例数据框的代码:

from pyspark.sql import Row
from collections import OrderedDict

def convert_to_row(d: dict) -> Row:
    return Row(**OrderedDict(sorted(d.items())))

df=sc.parallelize([{"arg1": "first", "arg2": "John", "arg3" : '[{"name" : "click", "datetime" : "1570103345039", "event" : "entry" }, {"name" : "drag", "datetime" : "1580133345039", "event" : "exit" }]'},{"arg1": "second", "arg2": "Joe", "arg3": '[{"name" : "click", "datetime" : "1670105345039", "event" : "entry" }, {"name" : "drop", "datetime" : "1750134345039", "event" : "exit" }]'},{"arg1": "third", "arg2": "Jane", "arg3" : '[{"name" : "click", "datetime" : "1580105245039", "event" : "entry" }, {"name" : "drop", "datetime" : "1650134345039", "event" : "exit" }]'}]) \
    .map(convert_to_row).toDF()

运行此代码将创建一个数据框,如下所示:

+------+----+--------------------+
|  arg1|arg2|                arg3|
+------+----+--------------------+
| first|John|[{"name" : "click...|
|second| Joe|[{"name" : "click...|
| third|Jane|[{"name" : "click...|
+------+----+--------------------+

arg3列包含一个列表,我想将其分解为详细列。我想要如下数据框:

arg1 | arg2 | arg3 | 名称| 日期时间| 事件

我该如何实现?

x

您需要在from_json函数中为架构指定数组

from pyspark.sql.functions import explode, from_json

schema = 'array<struct<name:string,datetime:string,event:string>>'

df.withColumn('data', explode(from_json('arg3', schema))) \
  .select(*df.columns, 'data.*') \
  .show()                     
+------+----+--------------------+-----+-------------+-----+
|  arg1|arg2|                arg3| name|     datetime|event|
+------+----+--------------------+-----+-------------+-----+
| first|John|[{"name" : "click...|click|1570103345039|entry|
| first|John|[{"name" : "click...| drag|1580133345039| exit|
|second| Joe|[{"name" : "click...|click|1670105345039|entry|
|second| Joe|[{"name" : "click...| drop|1750134345039| exit|
| third|Jane|[{"name" : "click...|click|1580105245039|entry|
| third|Jane|[{"name" : "click...| drop|1650134345039| exit|
+------+----+--------------------+-----+-------------+-----+

注意:如果您的Spark版本不支持架构的simpleString格式,请尝试以下操作:

from pyspark.sql.types import ArrayType, StringType, StructType, StructField

schema = ArrayType(
    StructType([
          StructField('name',StringType())
        , StructField('datetime',StringType())
        , StructField('event',StringType())
    ])
)

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将列表转换为 pyspark 数据框

来自分类Dev

将熊猫数据框中的列表转换为列

来自分类Dev

将数据框中的列转换为类列表

来自分类Dev

PySpark-将行列表转换为数据框

来自分类Dev

将数据框转换为行列表pyspark胶

来自分类Dev

将pyspark数据框转换为python词典列表

来自分类Dev

使用lapply将单个数据框列转换为数据框列表中的数字

来自分类Dev

如何将基于列的大型数据框转换为R中的数据框列表

来自分类Dev

PySpark将类型为“映射”的列转换为数据框中的多个列

来自分类Dev

熊猫数据框:将列表的列转换为列表

来自分类Dev

将列表转换为R中的数据框,并添加带有子列表名称的列

来自分类Dev

将一组数据框行的列值转换为该列中的列表

来自分类Dev

如何将包含列表的列转换为熊猫数据框中的单独列?

来自分类Dev

Pyspark:将PythonRDD转换为数据框

来自分类Dev

将列表转换为数据框,然后在pyspark中加入不同的数据框

来自分类常见问题

将数据框列表的列转换为因数

来自分类Dev

将数据框列表的列转换为因数

来自分类Dev

高效地将列从数据框转换为字典列表

来自分类Dev

将 Pandas 数据框列表转换为布尔列

来自分类Dev

将 Spark 数据框列的不同值转换为列表

来自分类Dev

将数据框列值转换为列表

来自分类Dev

通过将列表元素转换为行和列,将列表转换为数据框python

来自分类Dev

pyspark | 将numpy数组列表转换为dataframe中的列

来自分类Dev

将每个级别的列表转换为数据框,将其放入单个列中

来自分类Dev

如何将列列表转换为 R 中的数据框

来自分类Dev

将嵌套列表中的元素转换为数据框

来自分类Dev

R数据框:将多行中的值转换为列表

来自分类Dev

将数据框转换为R中的列表

来自分类Dev

将数据框中的值转换为列表

Related 相关文章

  1. 1

    将列表转换为 pyspark 数据框

  2. 2

    将熊猫数据框中的列表转换为列

  3. 3

    将数据框中的列转换为类列表

  4. 4

    PySpark-将行列表转换为数据框

  5. 5

    将数据框转换为行列表pyspark胶

  6. 6

    将pyspark数据框转换为python词典列表

  7. 7

    使用lapply将单个数据框列转换为数据框列表中的数字

  8. 8

    如何将基于列的大型数据框转换为R中的数据框列表

  9. 9

    PySpark将类型为“映射”的列转换为数据框中的多个列

  10. 10

    熊猫数据框:将列表的列转换为列表

  11. 11

    将列表转换为R中的数据框,并添加带有子列表名称的列

  12. 12

    将一组数据框行的列值转换为该列中的列表

  13. 13

    如何将包含列表的列转换为熊猫数据框中的单独列?

  14. 14

    Pyspark:将PythonRDD转换为数据框

  15. 15

    将列表转换为数据框,然后在pyspark中加入不同的数据框

  16. 16

    将数据框列表的列转换为因数

  17. 17

    将数据框列表的列转换为因数

  18. 18

    高效地将列从数据框转换为字典列表

  19. 19

    将 Pandas 数据框列表转换为布尔列

  20. 20

    将 Spark 数据框列的不同值转换为列表

  21. 21

    将数据框列值转换为列表

  22. 22

    通过将列表元素转换为行和列,将列表转换为数据框python

  23. 23

    pyspark | 将numpy数组列表转换为dataframe中的列

  24. 24

    将每个级别的列表转换为数据框,将其放入单个列中

  25. 25

    如何将列列表转换为 R 中的数据框

  26. 26

    将嵌套列表中的元素转换为数据框

  27. 27

    R数据框:将多行中的值转换为列表

  28. 28

    将数据框转换为R中的列表

  29. 29

    将数据框中的值转换为列表

热门标签

归档