在pyspark中,我需要在运行时构建一个列列表,然后在这些列上进行聚合。
这是一个有效的例子:
T.agg(col1,col2)
但是我需要传递一个列列表类型list of column(而不是string)
不起作用:
cols=[col1,col2]
T.agg(cols) #Passes param as tupple1(List)
不起作用:
cols=[col1,col2]
T.agg(tupple(cols)) #Passes param as tupple1(tupple2)
这两种情况在pyspark代码上都失败: assert all(isinstance(c, Column) for c in exprs), "all exprs should be Column"
问题是python将列表作为tuple1传递,我需要传递一个列列表。解决办法是什么?
2条答案
按热度按时间camsedfj1#
问题是您需要将列表解压为单个参数。您可以使用
*
接线员。这个
*
解压列表中的元素。这里是另一个玩具的例子,它独立于pyspark。bakd9h0s2#
根据注解,如果要进行“第一次”聚合,可以执行以下操作: