编程语言
首页 > 编程语言> > python-PySpark中的高效列处理

python-PySpark中的高效列处理

作者:互联网

我有一个数据列,其中的列数非常多(> 30000).

我根据这样的第一列用1和0填充它:

for column in list_of_column_names:
  df = df.withColumn(column, when(array_contains(df['list_column'], column), 1).otherwise(0))

但是,此过程需要很多时间.有办法更有效地做到这一点吗?告诉我列处理可以并行化.

编辑:

样本输入数据

+----------------+-----+-----+-----+
|  list_column   | Foo | Bar | Baz |
+----------------+-----+-----+-----+
| ['Foo', 'Bak'] |     |     |     |
| ['Bar', Baz']  |     |     |     |
| ['Foo']        |     |     |     |
+----------------+-----+-----+-----+

解决方法:

您可能会这样,

import pyspark.sql.functions as F

exprs = [F.when(F.array_contains(F.col('list_column'), column), 1).otherwise(0).alias(column)\
                  for column in list_column_names]

df = df.select(['list_column']+exprs)

标签:python,apache-spark,pyspark,apache-spark-sql
来源: https://codeday.me/bug/20191013/1907491.html