Pandas で列の値が範囲内 (2 つの値の間) にあるかどうかを確認するにはどうすればよいでしょうか? 質問する

Pandas で列の値が範囲内 (2 つの値の間) にあるかどうかを確認するにはどうすればよいでしょうか? 質問する

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?

ベストアンサー1

使用betweenこれを行うには、引数を介して範囲値が含まれるかどうかもサポートしますinclusive

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

おすすめ記事