在数据框列(Pandas)中将负值剪切为0

时间:2017-07-27 19:44:21

标签: python python-3.x pandas

我正在做一个简单的pandas系列数据帧数学方程,在编译大量数据时,有些值会变为负值。是否有我可以添加的代码,以确保减法数学的值只有最小值为零?这就是我到目前为止所做的:

deltaT['data'] = (deltaT['hws'] - deltaT['hwr'])

谢谢!

4 个答案:

答案 0 :(得分:3)

您可以创建<form onsubmit="Add()"> </form>,然后使用deltaT['data']将负值设置为0.

df.loc

答案 1 :(得分:3)

您可以在一次操作中选择clip_lower

deltaT['data'] = (deltaT['hws'] - deltaT['hwr']).clip_lower(0)

答案 2 :(得分:2)

选项1
简单

deltaT['data'] = deltaT.eval('(hws - hwr) * (hws > hwr)')

考虑deltaT

deltaT = pd.DataFrame(dict(hws=[5, 8], hwr=[8, 5]))

deltaT.assign(data=deltaT.eval('(hws - hwr) * (hws > hwr)'))

   hwr  hws  data
0    8    5     0
1    5    8     3

选项2
与选项1相同,但使用numpy数组

r, s = (deltaT[c].values for c in ['hwr', 'hws'])
deltaT.assign(data=(s - r) * (s > r))

   hwr  hws  data
0    8    5     0
1    5    8     3

选项3
创造性尝试

deltaT.assign(data=deltaT.eval('hws - hwr').to_frame().assign(_=0).max(1))

   hwr  hws  data
0    8    5     0
1    5    8     3

答案 3 :(得分:1)

return Json(result);