我有以下功能:
d["direction"] = d.apply(lambda x: 180 + 180/(m.pi*(m.atan2(x.water_u,x.water_v))), axis=1, result_type="expand")
该函数添加了一个名为方向的列,基于2列water_u和water_v的计算-正如你所看到的,如果角度为零,将会有一个零除法,因此一个错误,现在我可以创建一个函数来添加一个if,这样它是零,除法的值仍然为零,但是有没有一个python的方法来在我的lambda函数中做到这一点?
无论如何,如果有人知道一个聪明简洁的方法来实现这一点,我会很感激。
对
您不必使用lambda
函数。
分别计算你的角度,并使用np.where
计算方向:
import numpy as np
angle = (np.pi*(np.arctan2(df.water_u, df.water_v)))
df['direction'] = np.where(angle != 0, 180 + 180 / angle, 0)
的例子:
# Before
>>> df
water_u water_v
0 0 0
1 10 20
# After
>>> df
water_u water_v direction
0 0 0 0.000000
1 10 20 303.576135