gpt4 book ai didi

dataframe - PySpark 列到其值的 RDD

转载 作者:行者123 更新时间:2023-12-02 00:13:58 25 4
gpt4 key购买 nike

我正在寻找将数据框列转换为 RDD 的最直接和惯用的方法。假设 views 列包含 float 。以下内容不是我要找的

views = df_filtered.select("views").rdd

因为我最终得到的是 RDD[Row] 而不是 RDD[Float] 因此我无法将它提供给 mllib.stat 中的任何统计方法(如果我正确理解发生了什么):

corr = Statistics.corr(views, likes, method="pearson")
TypeError: float() argument must be a string or a number

在 pandas 中,我会使用 .values() 将这个 pandas Series 转换成它的值数组,但是 RDD .values() 方法似乎没有以这种方式工作。我最终得出以下解决方案

views = df_filtered.select("views").rdd.map(lambda r: r["views"])

但我想知道是否有更直接的解决方案

最佳答案

为此你需要使用 flatMap。

>>> newdf=df.select("emp_salary")
>>> newdf.show();
+----------+
|emp_salary|
+----------+
| 50000|
| 10000|
| 810000|
| 5500|
| 5500|
+----------+

>>> rdd=newdf.rdd.flatMap(lambda x:x)
>>> rdd.take(10);
[50000, 10000, 810000, 5500, 5500]

你看起来像这样吗?

是的,而不是将您的语句转换为:

views = df_filtered.select("views").rdd.flatMap(lambda x:x)

关于dataframe - PySpark 列到其值的 RDD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57608778/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com