如何在 Python 中将 Pyspark Dataframe 转换为字典
How to Convert Pyspark Dataframe to Dictionary in Python
我有以下数据框。
Col1 Col2
AA_1 S1
ABC S2
BCD S3
BCD S5
PQ_2 S6
XYP S8
XYP S9
我需要以下格式的输出。
data = {'AA_1': '[S1]', 'ABC': '[S2]', 'BCD': '[S3,S5]', 'PQ_2': '[S6]', 'XYP': '[S8,S9]'}
有没有什么方法可以仅使用 PySpark 来实现上述输出,这真的很有帮助。
可以通过col1分组,使用聚合方式collect_list收集col2来实现
from pyspark.sql.functions import collect_list
data = [
('AA_1', 'S1'),
('ABC', 'S2'),
('BCD', 'S3'),
('BCD', 'S5'),
('PQ_2', 'S6'),
('XYP', 'S8'),
('XYP', 'S9')
]
df = spark.createDataFrame(data, ["col1", "col2"])
data2 = df.groupBy('col1').agg(collect_list('col2').alias('values')).collect()
data3 = {}
for row in data2:
data3[row.col1] = row.values
print(data3)
我有以下数据框。
Col1 Col2
AA_1 S1
ABC S2
BCD S3
BCD S5
PQ_2 S6
XYP S8
XYP S9
我需要以下格式的输出。
data = {'AA_1': '[S1]', 'ABC': '[S2]', 'BCD': '[S3,S5]', 'PQ_2': '[S6]', 'XYP': '[S8,S9]'}
有没有什么方法可以仅使用 PySpark 来实现上述输出,这真的很有帮助。
可以通过col1分组,使用聚合方式collect_list收集col2来实现
from pyspark.sql.functions import collect_list
data = [
('AA_1', 'S1'),
('ABC', 'S2'),
('BCD', 'S3'),
('BCD', 'S5'),
('PQ_2', 'S6'),
('XYP', 'S8'),
('XYP', 'S9')
]
df = spark.createDataFrame(data, ["col1", "col2"])
data2 = df.groupBy('col1').agg(collect_list('col2').alias('values')).collect()
data3 = {}
for row in data2:
data3[row.col1] = row.values
print(data3)