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