Python pyspark错误:没有足够的值来解包(预期为3,得到2)
我有以下数据Python pyspark错误:没有足够的值来解包(预期为3,得到2),python,apache-spark,pyspark,pyspark-sql,Python,Apache Spark,Pyspark,Pyspark Sql,我有以下数据 my_data=["Sentence1",['a','b','c'],"Sentence2",['d','e'],"Sentence3",['f']] 并希望使用pyspark 2.2将输入数据转换为数据帧 --------------------------------- | ID | Sentence | label | --------------------------------- | 01 | Sentence1 |['a','b','c'] | |
my_data=["Sentence1",['a','b','c'],"Sentence2",['d','e'],"Sentence3",['f']]
并希望使用pyspark 2.2将输入数据转换为数据帧
---------------------------------
| ID | Sentence | label |
---------------------------------
| 01 | Sentence1 |['a','b','c'] |
| 02 | Sentence2 |['d','e'] |
但是当用户使用下面的代码进行操作时
from pyspark.sql import Row
to_row = Row('ID','Sentence', 'list')
df = spark.createDataFrame([to_row(i,s,l) for i,s,l in enumerate(my_data)])
我得到以下错误
ValueError:没有足够的值来解包(预期为3,实际为2)
有人能帮我吗?看起来您复制并粘贴了以下内容:
: 生成包含计数的对(从 start,默认为零)和iterable参数生成的值。 枚举对于获取索引列表非常有用:枚举
使用(0, seq[0]), (1, seq[1]), (2, seq[2]), ...
它将产生mydata
这根本没用[(0, 'Sentence1'), (1, ['a', 'b', 'c']), (2, 'Sentence2'), (3, ['d', 'e']), (4, 'Sentence3'), (5, ['f'])]
- 这是因为您的数据不应该
但是 如果要连接记录["Sentence1",['a','b','c'],"Sentence2",['d','e'],"Sentence3",['f']]
- 如果是这种形式,用
不起作用,因为模式与数据不匹配。匹配模式将是i,s,l
i, (s, l)
- 合并:
在哪里 从第m个项目开始,从列表中获取第n个项目,然后from itertools import islice spark.createDataFrame([(x, y, z) for x, (y, z) in enumerate(zip( islice(my_data, 0, len(my_data), 2), islice(my_data, 1, len(my_data), 2))) ], ("id", "sentence", "label"))
将序列合并到:zip(seq1,seq2)
并[(seq1[0], seq2[0]), (seq1[1], seq2[1]), ... ]
将其转换为枚举
[(0, (seq1[0], seq2[0])), (1, (seq1[1], seq2[1])), ... ]
<>请考虑学习语言,然后切换到更高级的工具。 看起来像是复制和粘贴的:
: 生成包含计数的对(从 start,默认为零)和iterable参数生成的值。 枚举对于获取索引列表非常有用:枚举
使用(0, seq[0]), (1, seq[1]), (2, seq[2]), ...
它将产生mydata
这根本没用[(0, 'Sentence1'), (1, ['a', 'b', 'c']), (2, 'Sentence2'), (3, ['d', 'e']), (4, 'Sentence3'), (5, ['f'])]
- 这是因为您的数据不应该
但是 如果要连接记录["Sentence1",['a','b','c'],"Sentence2",['d','e'],"Sentence3",['f']]
- 如果是这种形式,用
不起作用,因为模式与数据不匹配。匹配模式将是i,s,l
i, (s, l)
- 合并:
在哪里 从第m个项目开始,从列表中获取第n个项目,然后from itertools import islice spark.createDataFrame([(x, y, z) for x, (y, z) in enumerate(zip( islice(my_data, 0, len(my_data), 2), islice(my_data, 1, len(my_data), 2))) ], ("id", "sentence", "label"))
将序列合并到:zip(seq1,seq2)
并[(seq1[0], seq2[0]), (seq1[1], seq2[1]), ... ]
将其转换为枚举
[(0, (seq1[0], seq2[0])), (1, (seq1[1], seq2[1])), ... ]