如何从另一个数据框创建转置数据框

Yifei Xu

我从外部文件创建了一个数据框 DF,它具有以下架构:

(id, field1, field2, field3) 分区列:id

数据示例是

 000,  11_field1,  22_field2,  33_field3
 001, 111_field1, 222_field2, 333_field3

我想从 DF 创建另一个数据框,其架构是

 (id, fieleName, fieldValue)

数据示例是

000, field1,  11_field1
000, field2,  22_field2
000, field3,  33_field3
001, field1, 111_field1
001, field2, 222_field2
001, field3, 333_field3

谁能告诉我如何获取新的数据框?

用户12345

您可以pyspark使用以下explode选项实现此目的

首先导入必要的库和函数

from pyspark.sql import SQLContext, Row

假设您的数据框是df.

如果你这样做 df.show()

你应该得到如下结果

+---+----------+----------+----------+
| id|    field1|    field2|    field3|
+---+----------+----------+----------+
|  0| 11_field1| 22_field2| 33_field3|
|  1|111_field1|222_field2|333_field3|
+---+----------+----------+----------+

然后将要分解的所有列映射为 2 列。在这里,您希望除 id 之外的所有列爆炸。因此,请执行以下操作

cols= df.columns[1:]

然后将其转换data framerdd如下所示

rdd = data.rdd.map(lambda x: Row(id=x[0], val=dict(zip(cols, x[1:]))))

要检查 rdd 是如何映射的,请执行以下操作

rdd.take()

你会得到如下结果

[Row(id=0, val={'field2': u'22_field2', 'field3': u'33_field3', 'field1': u'11_field1'}), Row(id=1, val={'field2': u'222_field2', 'field3': u'333_field3', 'field1': u'111_field1'})]

然后将rdd返回转换data framesaydf2

df2 = sqlContext.createDataFrame(rdd)

然后做df2.show()你应该得到如下结果

+---+--------------------+
| id|                 val|
+---+--------------------+
|  0|Map(field3 -> 33_...|
|  1|Map(field3 -> 333...|
+---+--------------------+

然后将数据帧 df2 注册为临时表

df2.registerTempTable('mytempTable')

然后在数据框上运行如下查询:

df3 = sqlContext.sql( """select id,explode(val) AS (fieldname,fieldvalue) from mytempTable""")

然后做df3.show(),你应该得到如下结果

+---+---------+----------+
| id|fieldname|fieldvalue|
+---+---------+----------+
|  0|   field3| 33_field3|
|  0|   field2| 22_field2|
|  0|   field1| 11_field1|
|  1|   field3|333_field3|
|  1|   field2|222_field2|
|  1|   field1|111_field1|
+---+---------+----------+

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何基于另一个数据框创建绘图新的数据框

来自分类Dev

从R中的另一个数据框创建多个数据框

来自分类Dev

根据来自另一个数据框的值创建新的数据框

来自分类Dev

从另一个数据框的列创建数据框

来自分类Dev

快速从另一个数据框创建熊猫数据框

来自分类Dev

R:创建新的数据框行是来自另一个数据框的列

来自分类Dev

基于另一个数据框按组创建新数据框

来自分类Dev

基于另一个数据框创建新的数据框

来自分类Dev

使用另一个数据框的唯一值创建并填充一个数据框

来自分类Dev

从另一个创建一个数据框(使用数据透视)

来自分类Dev

如何基于对R中另一个数据框的数学运算来创建数据框

来自分类Dev

如何通过获取另一个数据框的滚动COLUMN总数/总和来创建新的数据框?

来自分类Dev

如何基于另一个数据框中的组在熊猫数据框中创建指标列?

来自分类Dev

如何使用另一个数据框的分组输出来创建新的数据框?

来自分类Dev

如何创建一个新表来汇总另一个数据框中的数据?

来自分类Dev

groupby pandas数据框并创建另一个数据框,该数据框水平表示groupby结果

来自分类Dev

使用另一个数据框的行号从现有数据框创建新的pandas数据框

来自分类Dev

创建新的数据框,该数据框填充了另一个数据框的简单计算

来自分类Dev

groupby pandas数据框并创建另一个数据框,该数据框水平表示groupby结果

来自分类常见问题

如何从另一个数据框更新带有集合的熊猫数据框

来自分类Dev

如何访问另一个数据框中的列表/数据框值

来自分类Dev

如何从另一个数据框更新多索引数据框?

来自分类Dev

如何从另一个数据框更新带有集合的熊猫数据框

来自分类Dev

如何基于另一个数据框更改数据框的元素?

来自分类Dev

如何删除不在另一个数据框中的数据框行?

来自分类Dev

如何用另一个数据框重命名pandas数据框列?

来自分类Dev

如何搜索熊猫数据框以填充另一个数据框?

来自分类Dev

如何用另一个数据框列替换数据框列

来自分类Dev

如何将一个数据框转换为另一个数据框

Related 相关文章

  1. 1

    如何基于另一个数据框创建绘图新的数据框

  2. 2

    从R中的另一个数据框创建多个数据框

  3. 3

    根据来自另一个数据框的值创建新的数据框

  4. 4

    从另一个数据框的列创建数据框

  5. 5

    快速从另一个数据框创建熊猫数据框

  6. 6

    R:创建新的数据框行是来自另一个数据框的列

  7. 7

    基于另一个数据框按组创建新数据框

  8. 8

    基于另一个数据框创建新的数据框

  9. 9

    使用另一个数据框的唯一值创建并填充一个数据框

  10. 10

    从另一个创建一个数据框(使用数据透视)

  11. 11

    如何基于对R中另一个数据框的数学运算来创建数据框

  12. 12

    如何通过获取另一个数据框的滚动COLUMN总数/总和来创建新的数据框?

  13. 13

    如何基于另一个数据框中的组在熊猫数据框中创建指标列?

  14. 14

    如何使用另一个数据框的分组输出来创建新的数据框?

  15. 15

    如何创建一个新表来汇总另一个数据框中的数据?

  16. 16

    groupby pandas数据框并创建另一个数据框,该数据框水平表示groupby结果

  17. 17

    使用另一个数据框的行号从现有数据框创建新的pandas数据框

  18. 18

    创建新的数据框,该数据框填充了另一个数据框的简单计算

  19. 19

    groupby pandas数据框并创建另一个数据框,该数据框水平表示groupby结果

  20. 20

    如何从另一个数据框更新带有集合的熊猫数据框

  21. 21

    如何访问另一个数据框中的列表/数据框值

  22. 22

    如何从另一个数据框更新多索引数据框?

  23. 23

    如何从另一个数据框更新带有集合的熊猫数据框

  24. 24

    如何基于另一个数据框更改数据框的元素?

  25. 25

    如何删除不在另一个数据框中的数据框行?

  26. 26

    如何用另一个数据框重命名pandas数据框列?

  27. 27

    如何搜索熊猫数据框以填充另一个数据框?

  28. 28

    如何用另一个数据框列替换数据框列

  29. 29

    如何将一个数据框转换为另一个数据框

热门标签

归档