如何将参数传递给 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()
从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()