在熊猫上进行比较的循环

时间:2020-01-21 01:19:11

标签: python pandas for-loop

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

我有以下数据框:

          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

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

2 个答案:

答案 0 :(得分:2)

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

(df['CLOSE'] > df['CLOSE'].shift(1)).astype(int)

答案 1 :(得分:1)

开始于:

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
相关问题