PySpark 中是不是有与 Pandas 聚合函数 any() 等效的函数?
Posted
技术标签:
【中文标题】PySpark 中是不是有与 Pandas 聚合函数 any() 等效的函数?【英文标题】:Is there function in PySpark that is equivalent to Pandas aggregate function any()?PySpark 中是否有与 Pandas 聚合函数 any() 等效的函数? 【发布时间】:2019-11-25 09:31:12 【问题描述】:我想将以下 pandas 代码翻译成 PySpark 代码
pd_df.groupby(['colA']).agg(newCol1 = ('colB', 'count'),
newCol2 = ('colC', 'mean'))
newCol3 = ('colD', 'any')).reset_index()
等效的 PySpark 代码是
import pyspark.sql.functions as F
ps_df.groupBy(['colA']) \
.agg(F.count("colB").alias('newCol1'),
F.mean("colC").alias("newCol2"),
F.any("colD").alias("newCol3"))
但是,pyspark.sql.function
中没有聚合函数 any()
,(其他两个工作正常)。
有什么想法吗?
【问题讨论】:
没有内置的实现 【参考方案1】:any()
没有内置实现。相反,我建议使用first()
,因为它可能具有相同的用途,并且在计算上它不会导致大的重新洗牌。来自pyspark
文档:
聚合函数:返回组中的第一个值。
该函数默认返回它看到的第一个值。当 ignoreNulls 设置为 true 时,它将返回它看到的第一个非空值。如果所有值都为 null,则返回 null。
注意该函数是不确定的,因为它的结果取决于行的顺序,在洗牌后可能是不确定的。
如果您想了解更多信息,请参阅https://spark.apache.org/docs/2.4.3/api/python/pyspark.sql.html#pyspark.sql.functions.first 我希望这会有所帮助!
【讨论】:
以上是关于PySpark 中是不是有与 Pandas 聚合函数 any() 等效的函数?的主要内容,如果未能解决你的问题,请参考以下文章
具有多个聚合的 pyspark groupBy(如 pandas)
PySpark 中是不是有与 scikit-learn 的 sample_weight 等效的参数?
pandas 中是不是有与 .groupby 相对的“ungroup by”操作?