2017-08-11 4 views
1

以下のコードに基づいてバイナリ変数をコーディングする問題があります。私はfeatureが30以下であれば変数metricを1にし、そうでなければ0にしたいと思います。私はこのコードを実行すると、私は次のエラーを取得する:ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().条件文に基づいてバイナリ変数をコード化しようとしています

if df1.Feature <= 30: 
    df1.metric=1 
else: 
    df1.metric=0 
+0

私はエラーコード行が掲載されていないと思います。私は 'a'変数を見ることができません。 – danihp

+0

[シリーズの真理値はあいまいです。 a.empty、a.bool()、a.item()、a.any()またはa.all()]を使用します(https://stackoverflow.com/questions/32699034/the-truth-value-of- – ppperry

+0

これは私にも混乱させます。オブジェクトはまったくありません。ライブラリ(numpy/pandas)をインポートしました。 )とデータを作成し、変数REC30PYを作成しようとしました – mitch

答えて

0

あなたは1つのオブジェクトとしてシリーズ全体の真理値をテストしています。代わりにnp.whereを使用して、各要素をテストすることができます。あなたの場合:

df1.loc[:, 'REC30PY'] = np.where(df1.velocity<=30, 1, 0) 

それとも、ブール値を取得する:

df1.loc[:, 'REC30PY'] = np.where(df1.velocity<=30, True, False) 
+0

は、上記の動作を確認できます、ありがとうございました! – mitch

1

あなたはastypeによって01FalseにブールマスクTrueを変換することができます:

df1['REC30PY'] = (df1.velocity<=30).astype(int) 

としてTrueFalse秒:

df1['REC30PY'] = df1.velocity<=30 
関連する問題