2017-02-17 130 views
1

python中有兩個數字列。 'value_BF_2016'和'value_BF_2015'基於python中的if-then條件創建一個新變量

我想創建一個列,如果前面的列都是> 0,如果不是,則爲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

除了你在第一次猜測'''之前的點,有什麼不起作用嗎?這個想法對我來說很合適。 – languitar

+0

我認爲這是熊貓? – languitar

+0

@PeterWood'&'是有效的Python。這是位運算符,在pandas中被覆蓋。請參閱:https://docs.python.org/2/library/operator.html#mapping-operators-to-functions – languitar

回答

0

你有你的第一行代碼的額外點(.)。另外,它將返回一列布爾值。你可以通過乘以1轉換成int

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

將'&'換成'和'。 &符號用於二進制計算。 –

+0

當我這樣做,並改變和改變&並給出ValueError時,我仍然得到真/假:一個Series的真值是不明確的。使用a.empty,a.bool(),a.item(),a.any()或a.all()。 –

+0

&大熊貓是正確的。他們專門爲這些目的實施了這個運營商。您可以使用'astype(int)'將列轉換爲int。 – languitar