Pandas根据另一列添加新列(错误的项目数量超过19,放置意味着1)

时间:2017-01-13 15:21:58

标签: python pandas

我有一个包含列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]

两个命令都抛出异常。我该如何解决这个问题?

2 个答案:

答案 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