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).
Seen on:
Python
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 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.
Was this page helpful?
Report a correction or suggest an improvement
Last updated 2 Oct 2026