DataFrameがあり、列の値(v)のいずれかが_x<=v<=y
_を満たすかどうかを確認したいと思います。
_equal = any(df['columnX'] == value) # No problems here
in_between = any(x <= df['columnX'] <= y) # ValueError :/
_
私が得るエラーはValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
ですが、すでにany()
を使用しています!
それで、ここの問題は何ですか? _==
_では機能するが_x<=v<=y
_では機能しないのはなぜですか?
これを行うには between
を使用します。これは、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
次に、上記でany
を呼び出します。
In [132]:
s.between(0,1).any()
Out[132]:
True
あなたは2つの条件を持つことができます:
df[(x <= df['columnX']) & (df['columnX'] <= y)]
この行は、条件が満たされているdfのすべての行を選択します。
他の列の値を確認したい場合は、
df.loc[ df.loc[:, 'columnX'].between(a, b), : ]