gpt4 book ai didi

python - 在 Python Pandas 中,搜索值上升的连续 4 行

转载 作者:行者123 更新时间:2023-12-02 18:32:43 33 4
gpt4 key购买 nike

我正在尝试弄清楚如何标记价格属于 4 次加价的一部分的行。“is_consecutive”实际上是标记。

我设法在行之间进行差异:

df['diff1'] = df['Close'].diff()

但我没能找出哪一行是 4 次加价的一部分。

我想到使用 df.rolling() 。

示例 df,

在第 0-3 行,我们需要在 ["is_consecutive"] 列上获得“True”输出,因为该连续行上的 ['diff1'] 增加了 4 行。

在第 8-11 行,我们需要在 ["is_consecutive"] 列上获得“False”输出,因为该连续行上的 ['diff1'] 为零。

   Date      Price           diff1    is_consecutive   
0 1/22/20 0 0 True
1 1/23/20 130 130 True
2 1/24/20 144 14 True
3 1/25/20 150 6 True
4 1/27/20 60 -90 False
5 1/28/20 95 35 False
6 1/29/20 100 5 False
7 1/30/20 50 -50 False
8 2/01/20 100 0 False
9 1/02/20 100 0 False
10 1/03/20 100 0 False
11 1/04/20 100 0 False
12 1/05/20 50 -50 False

一般示例:

如果价格 = [30,55,60,65,25]

列表中连续数字的不同形式为:

diff1 = [0,25,5,5,-40]

所以当 diff1 为正时,它实际上意味着连续价格增加。

我需要标记(在 df 中)连续 4 个向上的行。

感谢您的帮助(-:

最佳答案

尝试:.rolling,窗口大小为4,最小周期为1:

df["is_consecutive"] = (
df["Price"]
.rolling(4, min_periods=1)
.apply(lambda x: (x.diff().fillna(0) >= 0).all())
.astype(bool)
)
print(df)

打印:

      Date  Price  is_consecutive
0 1/22/20 0 True
1 1/23/20 130 True
2 1/24/20 144 True
3 1/25/20 150 True
4 1/26/20 60 False
5 1/26/20 95 False
6 1/26/20 100 False
7 1/26/20 50 False

关于python - 在 Python Pandas 中,搜索值上升的连续 4 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69226370/

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