_import pandas as pd
import numpy as np
data = 'filename.csv'
df = pd.DataFrame(data)
df
one two three four five
a 0.469112 -0.282863 -1.509059 bar True
b 0.932424 1.224234 7.823421 bar False
c -1.135632 1.212112 -0.173215 bar False
d 0.232424 2.342112 0.982342 unbar True
e 0.119209 -1.044236 -0.861849 bar True
f -2.104569 -0.494929 1.071804 bar False
_
特定の列の範囲を選択したいと思います。たとえば、列two
を選択します。 -0.5〜+0.5の間のすべての値を選択したいと思います。これをどのように行うのですか?
使用する予定でした
_-0.5 < df["two"] < 0.5
_
しかし、これは(当然)ValueErrorを返します:
_ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
_
私は試した
_-0.5 (< df["two"] < 0.5)
_
しかし、これはすべてのTrue
を出力します。
正しい出力は
_0 True
1 False
2 False
3 False
4 False
5 True
_
pandas dataframe列の値の範囲を見つける正しい方法は何ですか?
編集:質問
.between()
を使用して
_df['two'].between(-0.5, 0.5, inclusive=False)
_
の違いになります
_ -0.5 < df['two'] < 0.5
_
そして不等式
_ -0.5 =< df['two'] < 0.5
_
?
between
with inclusive=False
を使用して、厳密な不等式を作成します。
df['two'].between(-0.5, 0.5, inclusive=False)
inclusive
パラメーターは、エンドポイントが含まれるかどうかを決定します(True
:<=
、False
:<
)。これは両方の兆候に適用されます。混合不等式が必要な場合は、明示的にコーディングする必要があります。
(df['two'] >= -0.5) & (df['two'] < 0.5)
.between
は良い解決策ですが、より細かな制御が必要な場合はこれを使用します。
(0.5 <= df['two']) & (df['two'] < 0.5)
オペレーター &
はand
とは異なります。他の演算子は|
for or
、~
for not
。詳細については この説明 を参照してください。
あなたの声明はこれと同じでした:
(0.5 <= df['two']) and (df['two'] < 0.5)
したがって、エラーが発生しました。