给出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
任何帮助将不胜感激。
干杯
答案 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]