【发布时间】:2019-06-11 23:14:14
【问题描述】:
我对 python 很陌生。我在下面有一个很长的问题。如果你们能帮助我,我将不胜感激。
我有一个大的股价数据数据框 df.columns = ['open','high','low','close']
我还根据每天的收盘价计算了两个指数移动平均线 - 5EMA 和 10EMA
当移动平均线发生交叉时,即今天 5EMA > 10EMA 但 昨天 5EMA
import pandas as pd
import numpy as np
data = pd.read_csv("Nifty.csv")
df = pd.DataFrame(data)
df['5EMA'] = df['Close'].ewm(span=5).mean()
df['10EMA'] = df['Close'].ewm(span=10).mean()
condition1 = df['5EMA'].shift(1) < df['10EMA'].shift(1)
condition2 = df['5EMA'] > df['10EMA']
df['cross'] = np.where(condition1 & condition2, 'cross', None)
print(df)
我需要一个 df['min'] 列,它在这个 df['cross']='cross' 和之前的 df['cross]='cross' 之间找到 df['low'] 的最小值。
我需要一个列 df['check'] 例如, df['check'] = 'up', if current df['min'] > previous df['min']
这是一个示例输出
在示例输出中,当第三个'cross'出现时,df['low'] 在第三个交叉和第二个交叉(在本例中为'11')之间的最小值大于 df[ 的最小值'low'] 在第一个交叉和第二个交叉之间(在本例中为“8”)。所以,df['check']='up'
当第四个'cross'发生时,df['low']的最小值在第四个cross和第三个cross(在本例中为'10')之间不大于df['low']的最小值在第二个十字架和第三个十字架之间(在本例中为“11”)。所以,df['check']='down'
每当 df['cross']='cross' 时,我都需要像这样不断地生成 df['check'] 的值
【问题讨论】:
-
您能否提供一个示例输入/输出来帮助我们理解您的问题?例如,您的输入/输出
df是什么样的。 -
我强烈建议您将第二个问题“我也想要...”放在单独的问答中。每个问题只能是一个问题。
-
嗨,我添加了一个示例输出作为链接。你能打开示例输出吗?