2017-02-17 8 views
1

私はPythonに2つの数値列を持っています。 'value_BF_2016'と 'value_BF_2015'pythonのif-then条件に基づいて新しい変数を作成する

前の列が両方とも0より大きい場合は1、それ以外の場合は0を作成します。

これはわかりにくいですが、わかりません。私のSAS/SQLのバックグラウンドではないかもしれません。

私は投機的にあなたがコードのあなたの最初の行に余分なドット(.)を持っている

dataset.['both_BF'] = (dataset['value_BF_2016'] > 0) &(dataset['value_BF_2015'] > 0) 

dataset.ix[dataset['value_BF_2016'] > 0 & dataset['value_BF_2015'] > 0, 'Both_BF'] == 0 
+0

を乗じてintに変換することができますか?アイデアは私に見えます。 – languitar

+0

これはパンダのためのものだと思いますか? – languitar

+0

@PeterWood '&'は有効なpythonです。これはビット単位で演算子で、パンダでオーバーライドされています。参照:https://docs.python.org/2/library/operator.html#mapping-operators-to-functions – languitar

答えて

0

を試してみました。さらに、ブール値の列を返します。 `[`あなたの最初の推測では、それについて何が動作しない前に、ドットから離れて1

dataset['both_BF'] = 1*((dataset['value_BF_2016'] > 0) & 
         (dataset['value_BF_2015'] > 0)) 
+0

'&'を 'と'に変更します。アンパサンドはバイナリ計算のためのものです。 –

+0

これを行い、&toとValueErrorを変更して変更すると、私はまだtrue/falseになります:Seriesの真理値はあいまいです。 a.empty、a.bool()、a.item()、a.any()またはa.all()を使用します。 –

+0

&パンダで正しいです。彼らは、これらの目的のためにこの演算子を具体的に実装しました。 'astype(int)'を使ってカラムをintに変換することができます。 – languitar

関連する問題