我有一个数据框。列“名称”包含列标题,应连接哪些值。我想用 pyspark concat_ws() 来做,但没有任何效果。我必须用 concat_ws() 函数解决它,没有熊猫等。
我得到的最好的是连接标题,但不是此列中的值。我无法从函数返回列表以在 concat_ws() 中解压它
map_cols = {'a':'newA', 'b':'newB', 'c':'newC', 'd':'newD'}
@udf
def get_result(names_col):
headers = []
for i in names_col:
headers.append(map_cols[i])
return headers
df = df.withColumn('names_arr', split('names', '_')).withColumn('result', concat_ws(';', get_result(col('names_arr'))))
输入数据框: 姓名 | 新A|新B|新C|新D -------------------------- a_b |1 | 2 | 7 |8 -------------------------- a_b_c |2 | 3 | 4 |4 -------------------------- a_b_c_d |3 | 2 |4 |4 -------------------------- c_d | 89 | 5 |3 |5 -------------------------- b_c_d | 7 |5 |6 | 5 预期的输出数据帧 姓名 | 新A|新B|新C|新D|结果 -------------------------------------- a_b |1 | 2 | 7 | 8 |1;2 -------------------------------------- a_b_c |2 | 3 | 4 |4 |2;3;4 -------------------------------------- a_b_c_d |3 | 2 |4 |4 |2;3;4;4 -------------------------------------- c_d |89 | 5 |3 |5 |3;5 -------------------------------------- b_c_d |7 |5 |6 | 5 |5;6;5