我需要计算一个列,其中值是对其他列进行矢量化操作的结果:
df["new_col"] = df["col1"] - min(0,df["col2"])
但事实证明,我不能像上面的语法一样使用min。那么,什么是在零和pandas列的给定值之间获得最小值的正确方法是什么?
答案 0 :(得分:6)
您可以使用numpy.minimum
查找数组的元素最小值
import numpy as np
df["new_col"] = df["col1"] - np.minimum(0,df["col2"])
答案 1 :(得分:1)
我认为其他答案不是你的意思。他们采用df['col2']
中的最小值并将其与0
进行比较(因此始终返回相同的值),同时您希望col2
和0
中每个值之间的最小值:
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