如何将此代码转换为for循环格式?

2024-04-20 10:50:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我想将此代码更改为使用“for”循环:

df = spark.createDataFrame([(0,prosecced_text[0]),  (1,prosecced_text[1]),.. ,(100,prosecced_text[100]) ], ["id", "items"])

100是prosecced_text列表的长度。你知道吗


Tags: 代码textiddf列表foritemsspark
3条回答

您可以以+id增量使用for的组合

from pyspark.ml.fpm import FPGrowth

temp = []
id = 0

for item in prosecced_text:
    temp.append((id, item))
    id += 1

df = spark.createDataFrame(temp, ["id", "items"])
fpGrowth = FPGrowth(itemsCol="items", minSupport=0.5, minConfidence=0.6)
model = fpGrowth.fit(df)

一般来说,我建议使用列表理解来创建类似您需要的列表的内容,但是您需要的特定元组列表正是^{}生成的内容(但是我们必须通过显式地从中构造list来使用enumerate的输出,以便获得实际的列表):

df = spark.createDataFrame(list(enumerate(prosecced_text)), ["id", "items"])

enumerate所做的是返回一个迭代器,该迭代器生成(index,value)元组,其中index默认从0开始,value是传递给enumerate的iterable的每个对应元素。你知道吗

根据@pault现在删除的注释,特定方法^{}接受任何类型的iterable作为其第一个参数,因此在上述特定情况下甚至不需要对list的封闭调用。如果您直接传递enumerate(prosecced_text),它就可以工作了。你知道吗

from pyspark.ml.fpm import FPGrowth
# create empty list buffer_list
buffer_list = []
for x in range(101):
    buffer_list.append((x,prosecced_text[x]))


df = spark.createDataFrame(buffer_list, ["id", "items"])
fpGrowth = FPGrowth(itemsCol="items", minSupport=0.5, minConfidence=0.6)
model = fpGrowth.fit(df)

相关问题 更多 >