根据一列将pyspark.sql dataFrame拆分为多个表

时间:2018-10-09 14:43:42

标签: python dataframe pyspark pyspark-sql

给出pyspark.sql.dataframe.DataFrame x: name day earnings revenue Oliver 1 100 44 Oliver 2 200 69 John 1 144 11 John 2 415 54 John 3 33 10 John 4 82 82

是否可以根据name列(充当索引)将表分为两个表,并将两个表嵌套在同一对象下(不确定要使用的确切术语)。因此,在上面的示例中,表[0]将为: name day earnings revenue Oliver 1 100 44 Oliver 2 200 69

和表[1]将是: name day earnings revenue John 1 144 11 John 2 415 54 John 3 33 10 John 4 82 82

请注意,每个“子表”中的行数可能会有所不同。

我尝试了以下操作:dict(tuple(x.groupby('name')))在Pandas数据帧上非常有效,但是当我尝试在pyspark.sql数据帧上执行相同操作时,出现错误:TypeError: 'GroupedData' object is not iterable

任何帮助将不胜感激。

干杯

1 个答案:

答案 0 :(得分:0)

你可以这样,

uniq_names = [x.asDict().values()[0] for x in df.select("name").distinct().collect()]
tables = [df.where(df.name == x) for x in uniq_names]