繁体   English   中英

在不进行RDD转换的情况下将Pyspark数据框列转换为dict

[英]Convert Pyspark dataframe column to dict without RDD conversion

我有一个Spark数据框,其中列是整数:

MYCOLUMN:
1
1
2
5
5
5
6

目的是使输出等于collections.Counter([1,1,2,5,5,5,6]) 我可以通过将列转换为RDD并调用collect和Counter来获得所需的结果,但是对于大型数据帧而言,这相当慢。

是否有更好的方法使用可以达到相同结果的数据框?

也许groupbycount类似于您所需要的。 这是我使用数据框计算每个数字的解决方案。 我不确定这是否会比使用RDD更快。

# toy example
df = spark.createDataFrame(pd.DataFrame([1, 1, 2, 5, 5, 5, 6], columns=['MYCOLUMN']))

df_count = df.groupby('MYCOLUMN').count().sort('MYCOLUMN')

df_count.show() 输出

+--------+-----+
|MYCOLUMN|count|
+--------+-----+
|       1|    2|
|       2|    1|
|       5|    3|
|       6|    1|
+--------+-----+

现在,您可以使用rdd转到Counter字典

dict(df_count.rdd.map(lambda x: (x['MYCOLUMN'], x['count'])).collect())

这将输出为{1: 2, 2: 1, 5: 3, 6: 1}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM