ValueError ambiguous truth 🐍 Python

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

  1. Use (df.a > 0) & (df.b < 5)
  2. Use .any() / .all() / .empty for if-checks
  3. Use np.where for element-wise choices

Detailed fix by platform

Python

  1. mask = (df["age"] >= 18) & (df["country"] == "IN")

How to diagnose

  1. Expression — Which if/and/or uses a Series?
  2. 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.