簡體   English   中英

創建一個新的 DataFrame 列並用 If 語句填充它 - Python

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM