pyspark计算一行中所有列的平均值

Fra*_*Boi 8 mean python-3.x pyspark

我想计算每列的平均值而不指定所有列名称。

例如,不要这样做:

res = df.select([mean('col1'), mean('col2')])
Run Code Online (Sandbox Code Playgroud)

我想做一些相当于:

res = df.select([mean('*')])
Run Code Online (Sandbox Code Playgroud)

那可能吗?

Aku*_*Aku 6

类似的解决方案,但可能更容易阅读:

results= df.agg(*(avg(c).alias(c) for c in df.columns))
Run Code Online (Sandbox Code Playgroud)

要轻松检索信息,请使用:

results.first().asDict()
Run Code Online (Sandbox Code Playgroud)

当你用它来填充 NaN 时会很方便,例如:

df.na.fill(results.first().asDict())
Run Code Online (Sandbox Code Playgroud)

没有晋升,只是来自我这边的感激之情:我在 Layla AI 的精彩 pyspark 课程中学到了这个很酷的技巧(Pyspark 数据科学家必备知识)


Rah*_*mar 5

你可以这样做

res  = df.select(*[f.mean(c).alias(c) for c in df.columns])
Run Code Online (Sandbox Code Playgroud)