1. 程式人生 > >Python異常:ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.an

Python異常:ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.an

Python跑了一個策略,報了個異常:ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().這句換的大概意思是:“”陣列的真實值不明確“”。出現的這個問題的場景是遍歷了一個浮點數的資料導致的。

1、報錯如圖:

2、看了程式碼,發現沒啥錯誤的呀。

3、其實就是用pandas的arange()來遍歷浮點型的資料,即起始值是0.01,結束值別的物件處理出來的,步長也是引數傳過來了。這Python程式碼是Python同事寫的,然後我自己寫了demo跑了一下這個arange()方法的demo沒有報錯呀,本以為是arrange()函式和range()函式的問題,其實不是!最後結合報錯異常和經驗想到了一個東西,那就是實參和形參的問題!這程式碼裡結束值和步長都是形參,按理是分配了儲存空間,但是異常說是“”真實值不明確“”,那就說明了一個問題,就是這個形參的型別是不明確的,可能是浮點型、整型或者物件。這就是問題的所在,果斷給強轉了個型別float()。

  for target_profit in np.arange(0.01,float(round(max_basic_effect['largest_return'],2)),step).tolist():

 

果然!!!。直接通了

總結:當報錯ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.an這個異常,應該就想到我們用的值是有問題的。