我在变量中有一个值-ID
为1
,并且有十个值的列表说
LIST1 = [1,2,3,4,5,6,7,8,9,10]
。
现在我想创建一个pyspark数据框,如下所示:
ID LIST
1 1
1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
注意:List1的长度是动态的,根据其长度,我们需要相应地添加行。
答案 0 :(得分:0)
这取决于ID是否为常数,或者您甚至拥有ID为2的List2,然后希望将两者合并为一个DataFrame。
就常量而言,有两种选择:
ID = 1
LIST1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
source = list(map(lambda x: (ID, x), LIST1))
# source: [(1, 1), (1, 2), (1, 3), (1, 4), (1, 5), (1, 6), (1, 7), (1, 8), (1, 9), (1, 10)]
df = spark.createDataFrame(source, ['ID', 'LIST'])
df.show()
# +---+----+
# | ID|LIST|
# +---+----+
# | 1| 1|
# | 1| 2|
# | 1| 3|
# | 1| 4|
# | 1| 5|
# | 1| 6|
# | 1| 7|
# | 1| 8|
# | 1| 9|
# | 1| 10|
# +---+----+
或
from pyspark.sql.functions import lit
ID = 1
LIST1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
source = list(map(lambda x: (x,), LIST1))
# createDataFrame needs iter of iters -> list/tuple of lists/tuples
df = spark.createDataFrame(source, ['LIST'])
df.withColumn('ID', lit(ID)).show()
+----+---+
|LIST| ID|
+----+---+
| 1| 1|
| 2| 1|
| 3| 1|
| 4| 1|
| 5| 1|
| 6| 1|
| 7| 1|
| 8| 1|
| 9| 1|
| 10| 1|
+----+---+