# ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

**Code:** `ValueError ambiguous truth` · **Category:** Python · **Seen on:** Python

A pandas Series/NumPy array was used where Python expects a single True/False (if, and, or).

## 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?

---
Source: [WhatIsMyError](https://whatismyerror.com/errors/python/pandas-truth-value-of-a-series-is-ambiguous)
