2017-04-05 67 views
2

我已經徹底搜索了幾個小時以獲得答案,但不幸的是我一直沒能找到任何東西。通過條件在熊貓csv文件中創建一個新列

我有一個csv文件,看起來像在圖片上。
enter image description here

我想要做的是,例如,創建一個新的列,其中每一行是0,除非一個月== 1 天> 11。我做了類似的事情,我跟所有行提出了新的列= 0時,小時> 8小時和20 <,剩下的都是那些:

dataTest['day_or_night'] = 0 

dataTest['day_or_night'][dataTest['hour'] < 8] = 1 

dataTest['day_or_night'][dataTest['hour'] > 20] = 1 

任何幫助,將不勝感激!

回答

2

試試這個:

df['new'] = np.where((df.month==1) & (df.day>11), 1 0) 
2

轉換你的病情的布爾表達式爲1並將其轉換爲int

dataTest['day_or_night'] = (
    dataTest.day.gt(11) & dataTest.month.eq(1) 
).astype(np.uint8) 
+0

這個工程赫然。另一個問題:是否有可能以某種方式添加更多條件?我試過 'df ['ispitna'] =( (df.day.gt(11)&df.month.eq(1))或(df.day.lw(3)&df.month。 (2))或(df.day.gt(26)&df.month.eq(3))或(df.day.lw(3)&df.month.eq(4))或(df.day.lw(3)&df.month.eq(4))。 day.gt(16)&df.month.eq(5)) ).astype(np.uint8)' 但顯然,它不工作... – saremisona

+0

@saremisona是的,這應該工作...我無法保證你的邏輯。但這個想法很有道理。 – piRSquared

+0

我不斷收到相同的錯誤.. 'ValueError:一個Series的真值是不明確的。使用a.empty,a.bool(),a.item(),a.any()或a.all()。' – saremisona