我目前正在使用收集列表来实现此结果,但是这需要更多时间。
df= df.groupBy("col1").agg(collect_list(df['col2']).alias('col2'))
输入df:
+----+----+
|col1|col2|
+----+----+
|a |x |
|a |y |
|b |y |
+----+----+
collect_list当前可实现预期的输出,但是正在尝试寻找另一种方法:
+----+----+
|col1|col2|
+----+----+
|a |x,y |
|b |y |
+----+----+
我正在尝试使用split和join实现相同的目的。像下面这样的东西,我无法弄清楚确切的语法。
def list_cols(cols):
return [','.join(val.split()) for val in cols]
df = df.groupBy('col1').agg(list_cols(meta["cols"]))