簡體   English   中英

TypeError:-:“ str”和“ numpy.ndarray”的不受支持的操作數類型

[英]TypeError: unsupported operand type(s) for -: 'str' and 'numpy.ndarray'

我遇到了min()max()和strnumpy.ndarray 我收到此錯誤:

TypeError: unsupported operand type(s) for -: 'str' and 'numpy.ndarray'

我懷疑問題haHigh0在定義haUpLeg0的行中的haUpLeg0 ,我很樂意提供有關如何糾正的任何輸入。 我已經通過堆棧查看了一些類似的問題,但是似乎無法解決此問題。

數據:

Date        Time    Open    High    Low    Close    Volume  Ticker 
02/01/2015  14:30   79.52   79.73   79.52   79.71   10841   DVY 
02/01/2015  14:31   79.6999 79.6999 79.61   79.67   1426    DVY 
02/01/2015  14:32   79.69   79.7    79.69   79.7    800     DVY 
02/01/2015  14:33   79.7    79.759  79.7    79.759  1158    DVY 
02/01/2015  14:34   79.747  79.747  79.73   79.73   1125    DVY 
02/01/2015  14:35   79.73   79.73   79.71   79.71   301     DVY 
02/01/2015  14:36   79.8    79.82   79.75   79.82   7818    DVY 
02/01/2015  14:37   79.82   79.83   79.778  79.82   6985    DVY

碼:

mkt_data = index_data[['Date', 'Time', 'Open', 'High', 'Low', 'Close', 'Volume']]
open0 = mkt_data['Open'] #
high0 = mkt_data['High'] #
low0 = mkt_data['Low'] #
close0 = mkt_data['Close'] #
date0 = mkt_data['Date'] #
time0 = mkt_data['Time'] #
ticker0 = index_data['Ticker'] #

close1 = mkt_data['Close'].shift(1) #
open1 = mkt_data['Open'].shift(1) # 
high1 = mkt_data['High'].shift(1) #
low1 = mkt_data['Low'].shift(1) #
high2 = mkt_data['High'].shift(2) #
low2 = mkt_data['Low'].shift(2) #
close2 = mkt_data['Close'].shift(2) # 
open2 = mkt_data['Open'].shift(2) #
close3 = mkt_data['Close'].shift(3) # 
open3 = mkt_data['Open'].shift(3) #

haClose2 = (open2 + high2 + low2 + close2) / 4  #
haOpen2 = (close3 + open3) / 2  #       

haClose1 = (open1 + high1 + low1 + close1) / 4  #
haOpen1 = (haClose2 + haOpen2) / 2  #
haHigh1 = max('high1', 'haOpen1', 'haClose1') #
haLow1 = min('low1', 'haOpen0', 'haClose1') # 

haClose0 = (open0 + high0 + low0 + close0) / 4 #
haOpen0 = (haClose1 + haOpen1) / 2 #


haHigh0 = max('high0', 'haOpen0', 'haClose0') #
haLow0 = min('low0', 'haOpen0', 'haClose0')  #
haUpLeg0 = (haHigh0 - haClose0) / (close1) #

在底部附近,您似乎開始交替使用變量名和字符串,例如:

haClose1 = (open1 + high1 + low1 + close1) / 4  #
haOpen1 = (haClose2 + haOpen2) / 2  #
haHigh1 = max('high1', 'haOpen1', 'haClose1') #
haLow1 = min('low1', 'haOpen0', 'haClose1') # 

您可能想繼續使用變量:

haClose1 = (open1 + high1 + low1 + close1) / 4  #
haOpen1 = (haClose2 + haOpen2) / 2  #
haHigh1 = max(high1, haOpen1, haClose1) #
haLow1 = min(low1, haOpen0, haClose1) # 

等等

就是說,您收到一個TypeError,因為- (和+等)是strnumpy.ndarray之間不受支持的操作數類型-您不能從另一個中減去(或添加一個)。

如果您嘗試在以下三個值中找到最大值-high0,haOpen0,haClose0-您可以這樣做

max(max(high0),max(haOpen0),max(haClose0))

我認為您不應在變量名稱周圍使用引號。 'high0'是一個字符串,但是high0是一個熊貓系列。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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