gpt4 book ai didi

python - 如何找到每个组的第一个局部最大值?

转载 作者:太空狗 更新时间:2023-10-29 20:36:23 26 4
gpt4 key购买 nike

假设我有一个如下所示的 Pandas 数据框:

Test Parameter Value

X1 0 0.033285423511615113
X1 1 0.78790279861666179
X1 2 0.79136989638378297
X1 3 0.80063190842016707
X1 4 0.7884653622402551
X1 5 0.78561849214309198...
...
X1 22 22: 0.82241991278171311...
...
X2 ...

我想获取参数值为 3 的行。这是在第一次下降之前具有最后增加值的行。请注意,稍后我们可能会有更高的值(例如第 22 行)。本质上,我试图在“第一个”减少值之前获取“最后一个”数字。

另请注意,有多个测试,因此我可能需要执行以下操作:

myDF.groupby("Test").Something

最佳答案

Coldspeed 几乎拥有它,要仅获得第一组,您可以使用 cumprod 或类似的东西,例如

In [11]: df[((df.Value.diff().fillna(1) > 0).cumprod()) == 1].tail(1)
Out[11]:
Test Parameter Value
3 X1 3 0.800632

诀窍在于:

In [12]: (df.Value.diff().fillna(1) > 0)
Out[12]:
0 True
1 True
2 True
3 True
4 False
5 False
6 True
Name: Value, dtype: bool

In [13]: (df.Value.diff().fillna(1) > 0).cumprod()
Out[13]:
0 1
1 1
2 1
3 1
4 0
5 0
6 0
Name: Value, dtype: int64

注:我的df是这样的:

In [21]: df
Out[21]:
Test Parameter Value
0 X1 0 0.033285
1 X1 1 0.787903
2 X1 2 0.791370
3 X1 3 0.800632
4 X1 4 0.788465
5 X1 5 0.785618
6 X1 22 0.822420

关于python - 如何找到每个组的第一个局部最大值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46870692/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com