微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何串联数据框列pyspark?

如何解决如何串联数据框列pyspark?

我使用以下代码创建了数据框:

df = spark.createDataFrame([("A","20"),("B","30"),("D","80"),("A","120"),("c",("Null","20")],["Let","Num"])

df.show()
+----+---+
| Let|Num|
+----+---+
|   A| 20|
|   B| 30|
|   D| 80|
|   A|120|
|   c| 20|
|Null| 20|
+----+---+

我要创建如下数据框:

+----+-------+
| Let|Num    |
+----+-------+
|   A| 20,120|
|   B| 30    |
|   D| 80    |
|   c| 20    |
|Null| 20    |
+----+-------+

如何实现?

解决方法

您可以groupBy collect_list出租并收集为物品

from pyspark.sql import functions as F

df.groupBy("Let").agg(F.collect_list("Num")).show()

输出为列表:

+----+-----------------+
| Let|collect_list(Num)|
+----+-----------------+
|   B|             [30]|
|   D|             [80]|
|   A|        [20,120]|
|   c|             [20]|
|Null|             [20]|
+----+-----------------+



df.groupBy("Let").agg(F.concat_ws(",",F.collect_list("Num"))).show()

以字符串形式输出

+----+-------------------------------+
| Let|concat_ws(,collect_list(Num))|
+----+-------------------------------+
|   B|                             30|
|   D|                             80|
|   A|                         20,120|
|   c|                             20|
|Null|                             20|
+----+-------------------------------+

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。