将一个函数应用于数据帧的两列并创建一个新列



我想将此函数应用于以下列,但我做不到。

def damage(a,b):
l=5
if (a==b+0.3) or ((a>=1.5* b) and (a<=1.9 * b)):
l=1
elif  (a>=2* b) and (a<=2.9 * b) :
l=2
elif   (a>=4) or (a>= 3* b):
l=3
elif (a==b) or (a<=b+0.3)  or (a<= 1.5 *b):
l=0
return l
df['1st_day_damage'] =df[df['Cr-1'],df['Cr']].apply(damage)

最好使用矢量化代码。CCD_ 1速度较慢。

由于您没有提供任何示例,因此在盲区进行编码:

a = df['Cr-1']
b = df['Cr']
df['1st_day_damage'] = np.select(
[
(a == b + 0.3) | ((1.5 * b <= a) & (a <= 1.9 * b)),
(2 * b <= a) & (a <= 2.9 * b),
(a >= 4) | (a >= 3 * b),
(a == b) | (a <= b + 0.3) | (a <= 1.5 * b)
],
[
1,
2,
3,
0
],
default=5
)

最新更新