系列的真值是模棱两可的。使用a.empty,a.bool(),a.item(),a.any()或a.all()

时间:2015-09-21 15:27:46

标签: python pandas

我的输入是,数据输入顶部

Date        Time    Open    High    Low    Close    Volume
02/01/2015  14:30   79.52   79.73   79.52   79.71   10841
02/01/2015  14:31   79.6999 79.6999 79.61   79.67   1426
02/01/2015  14:32   79.69   79.7    79.69   79.7    800
02/01/2015  14:33   79.7    79.759  79.7    79.759  1158
02/01/2015  14:34   79.747  79.747  79.73   79.73   1125
02/01/2015  14:35   79.73   79.73   79.71   79.71   301
02/01/2015  14:36   79.8    79.82   79.75   79.82   7818
02/01/2015  14:37   79.82   79.83   79.778  79.82   6985
02/01/2015  14:38   79.8099 79.8099 79.72   79.72   1026
02/01/2015  14:39   79.77   79.78   79.7396 79.78   870
02/01/2015  14:40   79.79   79.79   79.73   79.73   12031
02/01/2015  14:41   79.76   79.76   79.6901 79.736  4642
02/01/2015  14:42   79.7301 79.744  79.7301 79.744  1099


numRow = 1
endRow = 50
dHaGreen0 = {}
for ticker in Index_tickers.ticker:
    index_data = pd.read_csv('C:\\Users\\me\\Dropbox\\MktData\\Index_list\\' +     ticker + '_' + str(timeFrame) + '.csv')
    open0 = index_data.Open
    close0 = index_data.Close
    high0 = index_data.High
    low0 = index_data.Low
    dHaClose0 = (open0 + high0 + low0 + close0) / 4 
    dHaOpen0 = (dHaClose1 + dHaOpen1) / 2
    dHaGreen0 = dHaClose0 >= dHaOpen0

        if numRow < endRow:
            dOpen0 = index_data.ix[numRow, index_data.Open]

            if dHaGreen0 == True & dHaGreen1 == True:
                dPosition = "Long"
            numRow = numRow + 1  

当我打印dHaGreen0时,它返回一个bool列表和“dtype:bool”。但是当我在if语句中使用dHaGreen0时,我得到错误ValueError:

  

系列的真值是模棱两可的。使用a.empty,a.bool(),   a.item(),a.any()或a.all()。

我已经检查了之前问题的许多建议答案,但无法阅读。所有回复都非常感谢。

1 个答案:

答案 0 :(得分:2)

您看到的错误是正确的。 dHaGreen0是一组bool值。当你问“dHaGreen0 == True”时,你需要决定以下两种解释中的一种:

你的意思是如果任何值是dHaGreen0是真的吗?如果是这样,请将“dHaGreen0 == True”替换为“any(dHaGreen0)== True”。

或者你的意思是如果dHaGreen0中的所有值都是真的吗?如果是这样,请将“dHaGreen0 == True”替换为“all(dHaGreen0)== True”。

同样适用于dHaGreen1

如果你想为每一对做这件事:

dPosition = dHaGreen0 & dHaGreen1

然后,这将为您提供一组布尔值,给出每对的结果。