python - 比较 Pandas 系列中的前一个值和下一个值

标签 python pandas loops zip series

我有一个包含 OHCL 数据的 pandas 数据框, 我想将 Low 系列中的每个值与该系列中的前一个值和下一个值进行比较。

2018-08-31    1.15839
2018-08-30    1.16411
2018-08-29    1.16511
2018-08-28    1.16618
2018-08-27    1.15938
2018-08-24    1.15340

如果该值小于该系列中的前一个值且小于该系列中的下一个值,我希望将该索引的新系列 (df.Low) 中的值返回为 True ,否则为 False。

另一种可能性是检索条件为真但附加索引的值。

我尝试使用 zip,这有效,但这样做我丢失了索引。

Lows = []
Highs = []

for x,y,z in zip(df.Low_Price[::],df.Low_Price[1::],df.Low_Price[2::]):
    if x > y < z:
        Low = np.around(y, decimals=5)
        Lows.append(Low)

for x,y,z in zip(df.High_Price[::],df.High_Price[1::],df.High_Price[2::]):
    if x < y > z:
        High = np.around(y, decimals=5)
        Highs.append(High)

谢谢!

最佳答案

您可以尝试将数据帧值移动到下一个和上一个来检查条件

考虑的数据框

        0        1
0   2018-08-31  1.15839
1   2018-08-30  1.16411
2   2018-08-29  1.16511
3   2018-08-28  1.16618
4   2018-08-27  1.15938
5   2018-08-24  1.15340


[(df[1].ge(df[1].shift())) & df[1].le(df[1].shift(-1))]

输出:

[0    False
 1     True
 2     True
 3    False
 4    False
 5    False
 Name: 1, dtype: bool]

如果您的目的只是检查整个列的低值,您可以使用

df[1].min()

输出:

1.1534

关于python - 比较 Pandas 系列中的前一个值和下一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52383122/

相关文章:

python - 如何检查文本列是否包含 Pandas 中的特定字符串

Javascript如何用不固定的迭代时间构建循环

c++ - 在 Qt 中如何将模态对话框窗口转换为非模态对话框窗口?

python - 加速有限差分模型

python - 在Python中使用break进入异常错误处理可以吗?

具有频率的 Ngram 的 Python 列表

python - 如何通过链接从多级列中删除第一级?

Python GTK更新标签

python - 将数据透视应用于 Pandas Dataframe

C语言改变数组中元素的值