如何在python中从Spark数据框架访问特定列?

问题描述

我的数据框看起来像这样

------+-------+                                                                
|cat_id|counter|
+------+-------+
|    12|  61060|
|     1| 542118|
|    13| 164700|
|     3| 406622|
|     5|  54902|
|    10| 118281|
|    11|  13658|
|    14|  72229|
|     2| 131206|
+------+-------+

获取上述数据框的查询是:

grouped_data = dataframe.groupBy("cat_id").agg(count("*").alias("counter"))

现在我需要读取不同cat_id的值,以将其保存在另一个数据库中。

我可以通过在id上使用for循环来完成它的方法

for cat_id in cat_ids_map:
     statsCount = grouped_data.select("counter").filter("cat_id = " + cat_id).collect()[0].counter

但是我认为可以有一种更好的方式来读取没有for循环的计数器。任何建议都会有所帮助!!!

谢谢

解决方法

如果要遍历整个数据框,通常使用 .foreach 函数。

所以您会这样做:

grouped_data.foreach(lambda x: f(x))

其中 f 是您的函数,它将对数据框中的每个元素执行您想做的任何事情