我有一个pyspark Dataframe ,它有两个列,ID和Elements。列“Elements”中有列表元素。它看起来像这样,
ID | Elements
_______________________________________
X |[Element5, Element1, Element5]
Y |[Element Unknown, Element Unknown, Element_Z]
我想用列'Elements'中最常用的元素组成一个列。输出应该如下所示,
ID | Elements | Output_column
__________________________________________________________________________
X |[Element5, Element1, Element5] | Element5
Y |[Element Unknown, Element Unknown, Element_Z] | Element Unknown
如何使用pyspark实现这一点?
先谢谢你。
2条答案
按热度按时间j2datikz1#
我们可以在这里使用高阶函数(可从spark 2.4+获得)
1.首先使用
transform
和aggregate
获取数组中每个非重复值的计数。1.然后以降序方式对结构体数组进行排序,然后获取第一个元素。
输出:
.drop("Map")
添加到输出中来删除Map
列 *对于较低版本,可以使用udf和统计模式:
czq61nw12#
你 可以 使用 pyspark sql 函数 来 实现 ( spark 2.4 + ) 。 下面 是 一 个 通用 函数 , 它 在 另 一 个 数组 列 中 添加 一 个 包含 最 常见 元素 的 新 列 。
中 的 每 一 个