PySpark-迭代数据帧的行

PySpark-迭代数据帧的行,pyspark,Pyspark,我需要迭代pyspark.sql.dataframe.dataframe.dataframe的行 我以前在pandas中使用函数iterrows()完成了这项工作,但我需要在不使用pandas的情况下为pyspark找到类似的功能 如果我对myDF中的行执行:它将迭代columns.DataFrame 谢谢您可以使用select方法,使用如下用户定义的函数对数据帧进行操作: columns = header.columns my_udf = F.udf(lambda data:

我需要迭代pyspark.sql.dataframe.dataframe.dataframe的行

我以前在pandas中使用函数iterrows()完成了这项工作,但我需要在不使用pandas的情况下为pyspark找到类似的功能

如果我对myDF中的行执行
它将迭代columns.DataFrame


谢谢

您可以使用select方法,使用如下用户定义的函数对数据帧进行操作:

    columns = header.columns
    my_udf = F.udf(lambda data: "do what ever you want here " , StringType())
    myDF.select(*[my_udf(col(c)) for c in columns])

然后在选择框内,您可以选择要对每个列执行的操作

pyspark数据帧中不允许像
iterrows
这样的迭代,尽管您使用
UDF
将函数应用于每一行。您希望在迭代中执行什么操作?我需要访问每行的列的值以进行比较和修改。我发现了一个名为toLocalIterator()的功能。如下所示:用于列表中的行(alltravelersDF.ToLocalitator())。但是需要很长时间…
toLocalitator()
被用作
collect()
的替代品,并一次执行一个分区的作业。因此,您的驱动程序应该有足够的内存来容纳数据中最大分区的数据。总之,最好不要使用它。您可以连接两个数据帧,然后尝试分组、聚合或窗口函数以使用多行,而不是直接迭代。