我有如下列表:
rrr=[[(1,(3,1)),(2, (3,2)),(3, (3, 2)),(1,(4,1)),(2, (4,2))]]
df_input = []
接下来我定义了如下 Headers :
df_header=['sid', 'tid', 'srank']
使用for循环将数据附加到空列表中:
for i in rrr:
for j in i:
df_input.append((j[0], j[1][0], j[1][1]))
df_input
Output : [(1, 3, 1), (2, 3, 2), (3, 3, 2)]
创建如下数据框:
df = spark.createDataFrame(df_input, df_header)
df.show()
+---+---+------+
| sid|tid|srank|
+---+---+------+
| 1| 3| 1|
| 2| 3| 2|
| 3| 3| 2|
+---+---+------+
现在我的问题是如何在不使用任何外部for循环的情况下创建数据框架(如上所述) . 输入列表包含多于1个缺失记录 .
2 回答
当您意识到您的初始列表是嵌套列表时 . 即实际列表作为外部列表的唯一元素,那么您将看到解决方案很容易通过仅考虑其第一个(也是唯一的)元素:
解决方案一:引入toDF()转换(但修改了输入)
解决方案2:使用所请求的输入矩阵使用列表理解,numpy flatten和reshape