数据帧逻辑-Python
为了好玩,我试图对交易逻辑进行回溯测试,但我似乎理解如何利用numpy做出决策。例如,我想根据数据是在上下两行的下方还是上方来设置df['position']=1或-1。如果数据=上一行。一旦数据>=上一行,我想设置位置=-1并保持在-1,然后重复数据帧逻辑-Python,python,pandas,numpy,logic,Python,Pandas,Numpy,Logic,为了好玩,我试图对交易逻辑进行回溯测试,但我似乎理解如何利用numpy做出决策。例如,我想根据数据是在上下两行的下方还是上方来设置df['position']=1或-1。如果数据=上一行。一旦数据>=上一行,我想设置位置=-1并保持在-1,然后重复 import pandas as pd import numpy as np import matplotlib.pyplot as plt data = np.random.standard_normal((5, 100)).flatten()
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
data = np.random.standard_normal((5, 100)).flatten()
data = data.cumsum()
df = pd.DataFrame({'Data': data})
df['std'] = df['Data'].rolling(50).std()
df['SMA'] = df['Data'].rolling(50).mean()
df['upper'] = df['SMA'] + (2 * df['std'])
df['lower'] = df['SMA'] - (2 * df['std'])
df[['Data', 'SMA', 'upper', 'lower']].plot(figsize=(10, 6))
df['position'] = 0
plt.show()
在这里,我试图做到这一点,但失败了,因为我不知道如何正确地做到这一点
df['islower'] = np.where(df['Data'] < df['lower'], 1, 0)
df['isupper'] = np.where(df['Data'] > df['upper'], 1, 0)
df['position'] = np.where(df['isupper']==1, -1, 0) | np.where(df['islower']==1, 1, 0)
df['islower']=np.where(df['Data']df['upper'],1,0)
df['position']=np.where(df['isupper']==1,-1,0)| np.where(df['islower']==1,1,0)
我想你要做的是:
df['islower'] = df['islower'].where(df['Data'] < df['lower'], 1, 0)
df['isupper'] = df['isupper'].where(df['Data'] < df['upper'], 1, 0)
df['islower']=df['islower']。其中(df['Data']
你失败是什么意思?你犯了什么错误?或者你想显示你得到的数据吗?如果df['data']numpy
和pandas
都有where
功能。我想你要找的是pandas
Yes中的那一个,这显示了如何正确地判断数据是在线下还是在线上,但是如果我们触底/顶线,如何设置位置=1或-1?是,这显示了如何正确地判断数据是否在行的下方或上方,但是如果我们触及底行/顶行,我如何设置position=1或-1?这不是您正在寻找的吗?我想知道如何设置df['position']=np。其中(df['isupper']==1,-1,0)| np。其中(df['islower'==1,1,0)如果您使用df['islower'==1,1,0)我使用的代码不正确[['position'].绘图(figsize=(10,6))并查看结果你是说如何设置OR条件?我想,我不确定当查看df['islower']和df['isupper']时,这是设置position=1还是-1的最佳方法