【发布时间】:2022-01-07 16:06:36
【问题描述】:
我有以下示例代码:
lst1 = ["a", "b"]
for ls1 in lst1:
new_lst = []
lst2 = ["d", "e", "f"]
for ls2 in lst2:
new_lst.append(ls1 + ls2)
df = (df.withColumn("final_" + ls1, greatest(*new_lst))
这是从每个循环中的列列表中获取最大值的正确方法吗?还有什么方法可以获取相应的列名吗?
示例:
输入 df =>
ad ae af bd be bf cd ce cf
--------------------------------------------------
10 11 12 13 14 15 16 17 18
19 20 21 22 23 24 25 26 27
28 29 30 31 32 33 34 35 36
预期输出 df =>
ad ae af final_a bd be bf final_b
------------------------------------------------------
10 11 12 12 13 14 15 15
19 20 21 21 22 23 24 24
28 29 30 30 31 32 33 33
谢谢!
【问题讨论】:
-
带有“df = ...”的最后一行应该在第二个(内部)循环之外但在第一个循环内,所以你应该将它向左移动四个位置
标签: sql list pyspark greatest-n-per-group sql-function