小编rst*_*ppa的帖子

如何将 numpy.array 作为新列添加到 pyspark.SQL DataFrame?

这是创建 pyspark.sql DataFrame 的代码

import numpy as np
import pandas as pd
from pyspark import SparkContext
from pyspark.sql import SQLContext
df = pd.DataFrame(np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12]]), columns=['a','b','c'])
sparkdf = sqlContext.createDataFrame(df, samplingRatio=0.1)
Run Code Online (Sandbox Code Playgroud)

所以 sparkdf 看起来像

a  b  c
1  2  3
4  5  6
7  8  9
10 11 12
Run Code Online (Sandbox Code Playgroud)

现在我想将一个 numpy 数组(甚至是一个列表)添加为一个新列

new_col = np.array([20,20,20,20])
Run Code Online (Sandbox Code Playgroud)

但是标准的方式

sparkdf = sparkdf.withColumn('newcol', new_col)
Run Code Online (Sandbox Code Playgroud)

失败。可能 udf 是要走的路,但我不知道如何创建一个 udf,它为每个 DataFrame 行分配一个不同的值,即遍历 new_col。我查看了其他 pyspark 和 pyspark.sql 但找不到解决方案。此外,我需要留在 pyspark.sql 中,所以不是 Scala 解决方案。谢谢!

python apache-spark apache-spark-sql pyspark pyspark-sql

6
推荐指数
1
解决办法
8786
查看次数