我有以下火星火数据帧

Car Time Val1
1 1 3
2 1 6
3 1 8
1 2 10
2 2 21
3 2 33

我想要得到每个时刻所有汽车的几何平均值,结果df应该如下所示:

time geo_mean
1 5.2414827884178
2 19.065333718304

我知道如何用以下代码计算算术平均值:


from pyspark.sql import functions as F

df = df.withColumn(
        "aritmethic_average",
        F.avg(F.col("Val1")).over(W.partitionBy("time"))
    )

但我不确定如何用几何方法来完成同样的事情.

提前谢谢!

推荐答案

你可以试试这个.首先得到同一组中所有值的乘积,然后获得第X个根,其中X是同一组中的行数.和第X次方=1/X的幂

df = df.groupby('Time').agg(F.pow(F.product('Val1'), 1/F.count('Val1')))

参考文献:https://www.mathsisfun.com/numbers/geometric-mean.html

Python相关问答推荐

Python json.转储包含一些UTF-8字符的二元组,要么失败,要么转换它们.我希望编码字符按原样保留

追溯(最近最后一次调用):文件C:\Users\Diplom/PycharmProject\Yolo01\Roboflow-4.py,第4行,在模块导入roboflow中

在Python Attrs包中,如何在field_Transformer函数中添加字段?

如何使用根据其他值相似的列从列表中获取的中间值填充空NaN数据

如何更改分组条形图中条形图的 colored颜色 ?

在含噪声的3D点网格中识别4连通点模式

名为__main__. py的Python模块在导入时不运行'

Flask Jinja2如果语句总是计算为false&

为什么在FastAPI中创建与数据库的连接时需要使用生成器?

计算空值

使用类型提示进行类型转换

将CSS链接到HTML文件的问题

如何在SQLAlchemy + Alembic中定义一个"Index()",在基表中的列上

如何在Python中解析特定的文本,这些文本包含了同一行中的所有内容,

TypeError:';Locator';对象无法在PlayWriter中使用.first()调用

BeatuifulSoup从欧洲志愿者服务中获取数据和解析:一个从EU-Site收集机会的小铲子

如何关联来自两个Pandas DataFrame列的列表项?

在Pandas 中以十六进制显示/打印列?

如何在不不断遇到ChromeDriver版本错误的情况下使用Selify?

为什么fizzbuzz在两个数字的条件出现在一个数字的条件之后时不起作用?