2017-04-05 78 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