我怎样才能找到一个月内n个最大值的平均值,但天必须是唯一的?

我确实也有一个时间戳列,但我猜制作它们的列是一种方式?

我试了df['peak_avg'] = df.groupby(['month', 'day'])['value'].transform(lambda x: x.nlargest(3).mean())天,但这是最大的三天的平均时间.

month day value peak_avg (expected)
1 1 35 35
1 1 30 35
2 1 34 28.5
2 2 23 28.5
3 1 98 97
3 2 96. 97

推荐答案

IIUC,你可以在monthday列中删除重复项,最后填充它们

df['peak_avg'] = (df.sort_values(['month', 'day', 'value'], ascending=[True, True, False])
                  .drop_duplicates(['month', 'day'])
                  .groupby(['month'])['value']
                  .transform(lambda x: x.head(3).mean()))
df['peak_avg'] = df.groupby(['month', 'day'])['peak_avg'].apply(lambda g: g.ffill().bfill())
print(df)

   month  day  value  peak_avg
0      1    1     35      35.0
1      1    1     12      35.0
2      2    1     34      28.5
3      2    3     23      28.5
4      3    1     98      98.0
5      3    2     98      98.0

Python相关问答推荐

如何在Windows上用Python提取名称中带有逗号的文件?

输出中带有南的亚麻神经网络

运行终端命令时出现问题:pip start anonymous"

如何在虚拟Python环境中运行Python程序?

加速Python循环

如何使用表达式将字符串解压缩到Polars DataFrame中的多个列中?

NumPy中条件嵌套for循环的向量化

转换为浮点,pandas字符串列,混合千和十进制分隔符

如何在图中标记平均点?

什么是最好的方法来切割一个相框到一个面具的第一个实例?

多处理队列在与Forking http.server一起使用时随机跳过项目

Gunicorn无法启动Flask应用,因为无法将应用解析为属性名或函数调用.'"'' "

如何在FastAPI中替换Pydantic的constr,以便在BaseModel之外使用?'

如何获得3D点的平移和旋转,给定的点已经旋转?

如何将泛型类类型与函数返回类型结合使用?

当我定义一个继承的类时,我可以避免使用`metaclass=`吗?

Pandas:将值从一列移动到适当的列

有没有一种方法可以根据不同索引集的数组从2D数组的对称子矩阵高效地构造3D数组?

按最大属性值Django对对象进行排序

跨两个数据帧收集非索引列上的公共组