Pyspark 将不同行中的列按另一列合并为单行顺序

问题描述 投票:0回答:2

我有一个数据框,有 2 列 CLMN_SEQ_NUM 和 CLMN_NM。我正在尝试将列 CLMN_NM 合并为以逗号分隔的单行。

所需的操作数 PR_NAME、PR_ID、PR_ZIP、PR_ADDRESS、PR_COUNTRY

cols_comb = df.agg(F.concat_ws(",",F.collect_list(F.col("CLMN_NM")))).first()[0]

但是订单来的不一样 PR_ZIP、PR_NAME、PR_COUNTRY、PR_ID、PR_ADDRESS 不知道其在数据框中的情况。

如何组合要按 CLMN_SEQ_NUM 排序的列

python pyspark databricks azure-notebooks
2个回答
0
投票

您可以将

collect_list
函数用作
selectExpr
的一部分,如下所示。


0
投票

CLMN_NM
CLMN_SEQ_NUM
打包到结构中,然后聚合数据帧以收集所有结构并排序

L = df.agg(F.collect_list(F.struct('CLMN_SEQ_NUM', 'CLMN_NM'))).first()[0]
cols = [r.CLMN_NM for r in sorted(L)]

# cols
['PR_NAME', 'PR_ZIP', 'PR_ADDRESS', 'PR_COUNTRY', 'PR_ID']
© www.soinside.com 2019 - 2024. All rights reserved.