首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pandas将数字列转换为1/-1

pandas将数字列转换为1/-1
EN

Stack Overflow用户
提问于 2018-03-02 15:49:50
回答 1查看 72关注 0票数 0

我有一个名为RSI的值列,我想通过pandas实现以下效果:

1)如果RSI > 70的值,意味着股票是超买的。因此,它可能会在不久的将来下降(表示意见‘-1’)

2)如果RSI < 30的值,意味着股票是超卖的。因此,它可能会在不久的将来上升(表示意见‘+1’)。

3)对于(30, 70)之间的值,如果t时刻的RSI大于t-1时刻的RSI,则对趋势的看法表示为‘+1’,反之亦然。

我该怎么办呢。谢谢。

EN

回答 1

Stack Overflow用户

发布于 2018-03-02 16:27:25

代码语言:javascript
复制
import pandas as pd
import numpy as np 
import random
RSI = pd.Series(np.random.randn(50))
t = pd.Series(list(range(50)))
opinion = 0
for i in t:
    if i!=0:
        if RSI[i] > 70:
            opinion -=1
        elif RSI[i] < 30:
            opinion += 1
        elif RSI[i] > RSI[i-1]:
            opinion += 1
        elif RSI[i] < RSI[i-1]:
            opinion -= 1

print(opinion)

无论是买入(+1)还是卖出(-1),如果你想让计数器随着时间t累积。如果您想要生成该更改的图形,请将这些值存储在Series中。

代码语言:javascript
复制
import pandas as pd
import numpy as np 
import random
RSI = pd.Series(np.random.randn(50))
t = pd.Series(list(range(50)))
opcount = 0
opinion =[]
for i in t:
    if i!=0:
        if RSI[i] > 70:
            opcount -= 1
            opinion.append(opcount)
        elif RSI[i] < 30:
            opcount += 1
            opinion.append(opcount)
        elif RSI[i] > RSI[i-1]:
            opcount += 1
            opinion.append(opcount)
        elif RSI[i] < RSI[i-1]:
            opcount -= 1
            opinion.append(opcount)

opinion = pd.Series(opinion)

print(opinion)

如果你只想要一个+1,-1,0的数组,可以做同样的事情,但不需要+=或-=。

代码语言:javascript
复制
import pandas as pd
import numpy as np 
import random
RSI = pd.Series(np.random.randn(50))
t = pd.Series(list(range(50)))
opinion =[]
for i in t:
    if i!=0:
        if RSI[i] > 70:
            opinion.append(-1)
        elif RSI[i] < 30:
            opinion.append(1)
        elif RSI[i] > RSI[i-1]:
            opinion.append(1)
        elif RSI[i] < RSI[i-1]:
            opinion.append(-1)
        else:
            opinion.append(0)
    else:
        opinion.append(0)

opinion = pd.Series(opinion)

print(opinion)

然后,您可以将其绘制为随着时间的推移显示为购买或不购买。这是假设你的RSI列是一段时间内股票的值,如果每个RSI是不同的股票,那么只需对列中的每个数组执行此操作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49064780

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档