ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
A pandas Series/NumPy array was used where Python expects a single True/False (if, and, or).
The truth value of a Series is ambiguousThe truth value of an array with more than one element is ambiguous Meaning
Comparisons on Series produce Series of booleans. Combine conditions with & and | (with parentheses), not and/or, and use .any()/.all() to collapse.
Common causes
- Using and/or between Series conditions
- if df["x"] > 0: on a whole column
- Missing parentheses with & and |
⚡ Quick fix
- Use (df.a > 0) & (df.b < 5)
- Use .any() / .all() / .empty for if-checks
- Use np.where for element-wise choices
Detailed fix by platform
Python
mask = (df["age"] >= 18) & (df["country"] == "IN")
How to diagnose
- Expression — Which if/and/or uses a Series?
- Intent — Element-wise mask, or any/all of the column?
🔧 Still not fixed?
Many errors look alike. If the steps above didn’t solve it, one of these is probably what you’re facing:
Similar errors
Most viewed in Python
Other ways to find it
Where this error sits
Origin: Application & API. Errors that are often confused with or caused by this one (click to open):
🧠 Still stuck? Analyze your error
Paste the full message, response headers or stack trace — we'll detect the platform and point to the most likely cause.
💬 What worked for others
No tips yet — did something else fix this for you?
Share what worked for you
Tips are checked by an editor before they appear. Links are removed.
Report a correction or suggest an improvement
Last updated 14 Oct 2026