用于对熊猫进行比较的循环

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用于对熊猫进行比较的循环相关的知识,希望对你有一定的参考价值。

我需要帮助在数据框上创建新列

我有以下数据框:

          OPEN    CLOSE
1      1.10074  1.10073
2      1.10073  1.10083
3      1.10083  1.10082
4      1.10082  1.10070
5      1.10071  1.10073
6      1.10073  1.10083
7      1.10083  1.10083
8      1.10083  1.10086
9      1.10088  1.10073
10     1.10073  1.10075

我想在大于或小于前一个值时在'CLOSE'列中标记值

示例出口:

          OPEN    CLOSE   TAG
1      1.10074  1.10073     ?   #anything can be placed
2      1.10073  1.10083     1   #value higher than previous
3      1.10083  1.10082     0
4      1.10082  1.10070     0
5      1.10071  1.10073     1   #value higher than previous
6      1.10073  1.10083     1   #value higher than previous
7      1.10083  1.10083     ?   #when equal anything can be placed
8      1.10083  1.10086     1   #value higher than previous
9      1.10088  1.10073     0
10     1.10073  1.10075     1   #value higher than previous

什么是最好的方法?我尝试使用枚举,但不能。谢谢您的帮助。

答案

您可以使用.shift(n),其中n表示要比较的先前行的数量:

(df['CLOSE'] > df['CLOSE'].shift(1)).astype(int)
另一答案

开始于:

df['prev']=df['CLOSE'].shift(1)

结果:

    OPEN    CLOSE   prev
1   1.10074 1.10073 NaN
2   1.10073 1.10083 1.10073
3   1.10083 1.10082 1.10083
4   1.10082 1.10070 1.10082
5   1.10071 1.10073 1.10070
6   1.10073 1.10083 1.10073
7   1.10083 1.10083 1.10083
8   1.10083 1.10086 1.10083
9   1.10088 1.10073 1.10086
10  1.10073 1.10075 1.10073

比添加:

import numpy as np
df['TAG'] = np.where(df['CLOSE']-df['prev']>0,1,0)

结果:

    OPEN    CLOSE   prev       TAG
1   1.10074 1.10073 NaN 0
2   1.10073 1.10083 1.10073    1
3   1.10083 1.10082 1.10083    0
4   1.10082 1.10070 1.10082    0
5   1.10071 1.10073 1.10070    1
6   1.10073 1.10083 1.10073    1
7   1.10083 1.10083 1.10083    0
8   1.10083 1.10086 1.10083    1
9   1.10088 1.10073 1.10086    0
10  1.10073 1.10075 1.10073    1

如果您希望在平等的情况下有所提高,则可以执行以下操作:

df['TAG'] = np.where(df['CLOSE']-df['prev']>0,1,np.where(df['CLOSE']-df['prev']==0,'EQUALS',0))

所需结果:

    OPEN    CLOSE   prev       TAG
1   1.10074 1.10073 NaN 0
2   1.10073 1.10083 1.10073    1
3   1.10083 1.10082 1.10083    0
4   1.10082 1.10070 1.10082    0
5   1.10071 1.10073 1.10070    1
6   1.10073 1.10083 1.10073    1
7   1.10083 1.10083 1.10083    EQUALS
8   1.10083 1.10086 1.10083    1
9   1.10088 1.10073 1.10086    0
10  1.10073 1.10075 1.10073    1

以上是关于用于对熊猫进行比较的循环的主要内容,如果未能解决你的问题,请参考以下文章

使用从循环内的代码片段中提取的函数避免代码冗余/计算开销

如何对熊猫表中的值进行平均

在 for 循环中创建和命名熊猫系列

熊猫在循环中将多列相乘

带有熊猫数据框的内连接循环,用于可能存在或不存在的各种组合[重复]

运算符及while初识