我需要根据给定的输入数据集在 pyspark 中创建一个新的数据框,如下所示

I need to create a new dataframe as below in pysaprk from given input dataset

薪水相同的人应该放在同一条记录中,姓名之间用“,”隔开。

输入数据集:

预期数据集

您可以按如下方式实现 -

Salary 上应用 groupBy 并使用 - collect_list 将所有 Name 组合在 ArrayType()

此外,您可以选择使用 - concat_ws

将其转换为 StringType

数据准备

df = pd.read_csv(StringIO("""Name,Salary
                abc,100000
                bcd,20000
                def,100000
                pqr,20000
                xyz,30000
        """)
    ,delimiter=','
).applymap(lambda x: str(x).strip())

sparkDF = sql.createDataFrame(df)

sparkDF.groupby("Salary").agg(F.collect_list(F.col("Name")).alias('Name')).show(truncate=False)

+------+----------+
|Salary|Name      |
+------+----------+
|100000|[abc, def]|
|20000 |[bcd, pqr]|
|30000 |[xyz]     |
+------+----------+

连接 WS

sparkDF.groupby("Salary").agg(F.concat_ws(",",F.collect_list(F.col("Name"))).alias('Name')).show(truncate=False)

+------+-------+
|Salary|Name   |
+------+-------+
|100000|abc,def|
|20000 |bcd,pqr|
|30000 |xyz    |
+------+-------+