我有一个包含列foo的数据帧df。 Foo列包含浮点数。
我想添加一个新列foobar,它是通过返回foo列中的值(如果为正)派生的,否则返回0.
我尝试了以下内容:
test['foobar'] = test[if (test['foo']> 0.0)
test['foobar'] = test[if (test['foo']> 0.0) test['foo'] else 0.0]
两个命令都抛出异常。我该如何解决这个问题?
答案 0 :(得分:1)
您可以使用Reces_table
,如果条件为真,则将值保留在Series中;如果condition为false,则使用其他值:
where
答案 1 :(得分:1)
您需要Series.where
:
test['foobar'] = test['foo'].where(test['foo']> 0.0, 0)
样品:
test = pd.DataFrame({'foo':[1,2.0,-3]})
print (test)
foo
0 1.0
1 2.0
2 -3.0
test['foobar'] = test['foo'].where(test['foo']> 0.0, 0)
print (test)
foo foobar
0 1.0 1.0
1 2.0 2.0
2 -3.0 0.0
numpy.where
的另一个解决方案:
test['foobar'] = np.where(test['foo']> 0.0, test['foo'], 0)
print (test)
foo foobar
0 1.0 1.0
1 2.0 2.0
2 -3.0 0.0