[英]Creating a New DataFrame Column and Filling it with an If Statement - Python
期望的結果是有一個新列,其中包含 header 'xOver',其中 xOver 中的值由 if 語句確定。
xOver 的值可以是:1、2 或 NaN。
如果滿足以下條件,則值為 1: data['Close'] > data['sma_5'] 和 data['Close'][-1] < data['sma_5']
如果不滿足該標准,則值為 NaN。
如果滿足另一個 if 和語句標准,則值為 2(但為簡單起見,為了解決此問題,我們可以忽略它)。
這就是數據框,叫做:data。 在此處輸入圖像描述
這是我迄今為止嘗試過的代碼:
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)
返回此:在此處輸入圖像描述
間諜.xlsx
我已經解決了這個問題,解決方案是:
data['xOver'] = np.where((data['Close'].shift(+2) < data['sma_5'].shift(+1))
& (data['Close'].shift(+1) > data['sma_5'].shift(+1))
& (data['Close'] > data['sma_5'].shift(+1)),
data['sma_5'],np.nan)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.