Python: 在使用Pandas進行邏輯運算時,應避免使用or運算子,而應使用|運算子(逐元素比對) ,以免觸發ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

加入好友
加入社群
Python: 在使用Pandas進行邏輯運算時,應避免使用or運算子,而應使用|運算子(逐元素比對) ,以免觸發ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all(). - 儲蓄保險王

code:

import pandas as pd

# 创建一个示例Series对象
serAZ = pd.Series(['Azimuth', 'Theta', 'Elevation', 'Theta', 'Azimuth'])

# 创建布尔掩码
mask = (serAZ == 'Azimuth') | (serAZ == 'Theta')

# 打印结果
print(mask)

輸出結果:

Python: 在使用Pandas進行邏輯運算時,應避免使用or運算子,而應使用|運算子(逐元素比對) ,以免觸發ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all(). - 儲蓄保險王

將|改為or,將觸發ValueError:

Python: 在使用Pandas進行邏輯運算時,應避免使用or運算子,而應使用|運算子(逐元素比對) ,以免觸發ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all(). - 儲蓄保險王

在 Python 中,用 or 時會先判斷左邊的表達式,
如果其為真則不會判斷右邊的表達式,
而直接返回左邊的結果。
而當左邊的表達式為 Pandas 的 Series 時,
該結果是一個包含多個布爾值的 Series。
這時就會引發 ValueError:
The truth value of a Series is ambiguous(模糊的) 的錯誤,
因為 Pandas 無法確定這個
包含多個布爾值的 Series 到底應該返回什麼值。
相反的,| 運算符會針對每個元素進行比較,
(類比 逐位元運算)
然後將結果組合成一個新的布爾值 Series。
因此,當您在 Pandas 中使用邏輯運算符時,
應該使用 | 而不是 or,
並使用括號將比較表達式括起來以避免優先級問題。

推薦hahow線上學習python: https://igrape.net/30afN

加入好友
加入社群
Python: 在使用Pandas進行邏輯運算時,應避免使用or運算子,而應使用|運算子(逐元素比對) ,以免觸發ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all(). - 儲蓄保險王

儲蓄保險王

儲蓄險是板主最喜愛的儲蓄工具,最喜愛的投資理財工具則是ETF,最喜愛的省錢工具則是信用卡

You may also like...

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *