alec_djinn - 1 month ago 4

Python Question

I have a DataFrame and I would like to check if any of the values (v) of a column satisfy

`x<=v<=y`

`equal = any(df['columnX'] == value) # No problems here`

in_between = any(x <= df['columnX'] <= y) # ValueError :/

The error I get is

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

`any()`

So what's the problem here? Why does it work with

`==`

`x<=v<=y`

Answer

Use `between`

to do this, it also supports whether the range values are included or not via `inclusive`

arg:

```
In [130]:
s = pd.Series(np.random.randn(5))
s
Out[130]:
0 -0.160365
1 1.496937
2 -1.781216
3 0.088023
4 1.325742
dtype: float64
In [131]:
s.between(0,1)
Out[131]:
0 False
1 False
2 False
3 True
4 False
dtype: bool
```

You then call `any`

on the above:

```
In [132]:
s.between(0,1).any()
Out[132]:
True
```

Source (Stackoverflow)

Comments