PySpark:不使用循环将数据帧拆分为多个数据帧

2024-05-03 05:19:57 发布

您现在位置:Python中文网/ 问答频道 /正文

嗨,我有一个数据框,如图所示-

ID       X        Y

1      1234      284

1      1396      179

2      8620      178

3      1620      191

3      8820      828

我想根据ID将这个数据帧分割成多个数据帧。因此对于这个例子,将有3个数据帧。一种实现方法是循环运行过滤器操作。不过,我想知道是否可以更有效地做到这一点。


Tags: 数据方法id过滤器例子
1条回答
网友
1楼 · 发布于 2024-05-03 05:19:57
#initialize spark dataframe
df = sc.parallelize([ (1,1234,282),(1,1396,179),(2,8620,178),(3,1620,191),(3,8820,828) ] ).toDF(["ID","X","Y"])

#get the list of unique ID values ; there's probably a better way to do this, but this was quick and easy
listids = [x.asDict().values()[0] for x in df.select("ID").distinct().collect()]
#create list of dataframes by IDs
dfArray = [df.where(df.ID == x) for x in listids]

dfArray[0].show()
+---+----+---+
| ID|   X|  Y|
+---+----+---+
|  1|1234|282|
|  1|1396|179|
+---+----+---+
dfArray[1].show()
+---+----+---+
| ID|   X|  Y|
+---+----+---+
|  2|8620|178|
+---+----+---+

dfArray[2].show()
+---+----+---+
| ID|   X|  Y|
+---+----+---+
|  3|1620|191|
|  3|8820|828|
+---+----+---+

相关问题 更多 >