为列

时间:2015-08-14 11:57:54

标签: python pandas

我需要计算一个列,其中值是对其他列进行矢量化操作的结果:

df["new_col"] = df["col1"] - min(0,df["col2"])

但事实证明,我不能像上面的语法一样使用min。那么,什么是在零和pandas列的给定值之间获得最小值的正确方法是什么?

2 个答案:

答案 0 :(得分:6)

您可以使用numpy.minimum查找数组的元素最小值

import numpy as np
df["new_col"] = df["col1"] - np.minimum(0,df["col2"])

答案 1 :(得分:1)

我认为其他答案不是你的意思。他们采用df['col2']中的最小值并将其与0进行比较(因此始终返回相同的值),同时您希望col20中每个值之间的最小值:

df = pd.DataFrame(data={'a': [2, 3], 'b': [-1, 1]})

df['new_col'] = map(lambda a, b: a - min(0, b), df['a'], df['b'])

print df

>>    a  b  new_col
   0  2 -1        3
   1  3  1        3