使用withcolumn使用静态值列表迭代spark数据帧

时间:2018-01-31 03:59:46

标签: pyspark spark-dataframe pyspark-sql

我对pyspark有点新意。我有一个大约有5列和5条记录的火花数据框。我有5条记录的清单。 现在,我想使用withColumn将列表中的这5个静态记录添加到现有数据框中。我做到了,但它不起作用。 非常感谢任何建议。

以下是我的样本:

dq_results=[] 

for a in range(0,len(dq_results)):
    dataFile_df=dataFile_df.withColumn("dq_results",lit(dq_results[a]))
    print lit(dq_results[a])

感谢, Sreeram

2 个答案:

答案 0 :(得分:1)

dq_results=[] 

从列表dq_results创建一个数据框:

df_list=spark.createDataFrame(dq_results_list,schema=dq_results_col)

为df_list id添加一列(它将是行ID)

df_list_id = df_list.withColumn("id", monotonically_increasing_id())

为dataFile_df id添加一列(它将是行ID)

dataFile_df= df_list.withColumn("id", monotonically_increasing_id())

现在我们可以加入数据框df_listdataFile_df

dataFile_df.join(df_list,"id").show()

所以dataFile_df是最终数据框

答案 1 :(得分:0)

withColumn将添加一个新列,但我想你可能想要添加Rows。试试这个:

df1 = spark.createDataFrame([(a, a*2, a+3, a+4, a+5) for a in range(5)], "A B C D E".split(' '))

new_data = [[100 + i*j for i in range(5)] for j in range(5)]

df1.unionAll(spark.createDataFrame(new_data)).show()

+---+---+---+---+---+
|  A|  B|  C|  D|  E|
+---+---+---+---+---+
|  0|  0|  3|  4|  5|
|  1|  2|  4|  5|  6|
|  2|  4|  5|  6|  7|
|  3|  6|  6|  7|  8|
|  4|  8|  7|  8|  9|
|100|100|100|100|100|
|100|101|102|103|104|
|100|102|104|106|108|
|100|103|106|109|112|
|100|104|108|112|116|
+---+---+---+---+---+