如何将参数传递给 agg pyspark 函数的字典输入

how to pass parameter to dictionary input for agg pyspark function

pyspark docs开始,我能做到:

gdf = df.groupBy(df.name)
sorted(gdf.agg({"*": "first"}).collect())

在我的实际用例中,我有 maaaany 变量,所以我喜欢我可以简单地创建一个字典,这就是为什么:

gdf = df.groupBy(df.name)
sorted(gdf.agg(F.first(col, ignorenulls=True)).collect())

@lemon 的建议对我不起作用。

如何为 first(即 ignorenulls=True)传递参数,请参阅 here

尝试直接调用pyspark函数:

import pyspark.sql.functions as F

gdf = df.groupBy(df.name)

parameters = {'col': <your_column_name, 'ignorenulls': True}
sorted(gdf.agg(F.first(**parameters)).collect())

对你有用吗?

ps。 ignorenulls' 默认为 True。

您可以使用列表理解。

gdf.agg(*[F.first(x, ignorenulls=True).alias(x) for x in df.columns]).collect()