【发布时间】:2020-04-16 13:19:03
【问题描述】:
期望的结果是有一个标题为“xOver”的新列,其中 xOver 中的值由 if 语句确定。
xOver 的值可以是:1、2 或 NaN。
如果:data['Close'] > data['sma_5'] 和 data['Close'][-1]
如果不满足该条件,则值为 NaN。
如果满足另一个 if 和语句条件,则值为 2(但为简单起见,为了解决此问题,我们可以忽略它)。
这是数据框,叫做:data。 enter image description here
这是我迄今为止尝试过的代码:
import pandas as pd
import mplfinance as mpf
import numpy as np
data = pd.read_excel('SPY.xlsx', index_col=0, parse_dates=True)
#Create the moving avergae
data['sma_5'] = data['Close'].rolling(33).mean()
print(data)
def xOver(data):
if data['Close'] > data['sma_5'] and data['Close'][-1] < data['sma_5']:
return 1
else:
np.nan
data['xOver'] = xOver
print(data)
返回这个: enter image description here
SPY.xlsx
【问题讨论】:
-
我们需要一个minimal reproducible example 才能重现。这意味着:1/ 数据框 作为文本 以便我们可以复制/粘贴,2/ 足够的代码来重现问题和 3/ 观察到的和预期的结果。
-
数据框不能像文本一样发布,因此我将它们的屏幕截图包括在内。
-
不要尝试在 cmets 中添加代码或数据框数据,但请编辑问题。注释中的代码难以阅读和复制。
-
我的意思是数据并不重要,可以是任何值。只需将数据帧作为标题包含在内并评估上述代码的输出。
-
你如何添加文本 df's - 刚刚添加,它粘贴得很差/如何在线发布的指导很弱。因此,我提供的照片。
标签: python pandas dataframe if-statement moving-average