【问题标题】:How can I convert this code to for loop format?如何将此代码转换为 for 循环格式?
【发布时间】:2019-06-09 10:22:08
【问题描述】:

我想修改这段代码以使用“for”循环:

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

100 是prosecced_text 列表的长度。

【问题讨论】:

    标签: python python-3.x pyspark


    【解决方案1】:

    一般来说,我建议使用列表推导来创建类似于您需要的列表的内容,但是您需要的特定元组列表正是 enumerate 产生的(但我们必须通过显式消耗 enumerate 的输出从中构造一个list 以获得实际列表):

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

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

    根据@pault 现已删除的评论,特定方法spark.createDataFrame 接受任何类型的可迭代作为其第一个参数,因此在上述特定情况下,您甚至不需要对list 的封闭调用。如果您直接传递enumerate(prosecced_text),它将起作用。

    【讨论】:

      【解决方案2】:
      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)
      

      【讨论】:

        猜你喜欢
        • 2023-01-22
        • 2023-04-01
        • 2021-10-22
        • 1970-01-01
        • 2021-02-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多