我有一个 Spark DataFrame(使用 PySpark 1.5.1)并且想添加一个新列。
我尝试了以下方法但没有成功:
type(randomed_hours) # => list
# Create in Python and transform to RDD
new_col = pd.DataFrame(randomed_hours, columns=['new_col'])
spark_new_col = sqlContext.createDataFrame(new_col)
my_df_spark.withColumn("hours", spark_new_col["new_col"])
使用这个也有错误:
my_df_spark.withColumn("hours", sc.parallelize(randomed_hours))
那么如何使用 PySpark 向现有 DataFrame 添加新列(基于 Python 向量)?
原文由 Boris 发布,翻译遵循 CC BY-SA 4.0 许可协议
您不能在 Spark 中向
DataFrame
添加任意列。只能使用字面量创建新列(其他字面量类型在 如何在 Spark DataFrame 中添加常量列? )转换现有列:
包括使用
join
:或使用函数 / udf 生成:
性能方面,映射到 Catalyst 表达式的内置函数 (
pyspark.sql.functions
) 通常比 Python 用户定义的函数更受欢迎。如果您想将任意 RDD 的内容添加为列,您可以
zipWithIndex
并将其转换为数据帧