添加一个 if inside apply in pandas
Add an if inside apply in pandas
我有以下功能:
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 的计算添加了一个名为 direction 的列 - 如您所见,如果角度为零,则会有一个零除法,因此错误,现在我可以创建一个函数来添加一个 if,这样它就为零除法的值保持为零但是在我的 lambda 函数中有没有一种 pythonic 的方式来做到这一点?
无论如何,如果有人知道实现此目的的简洁明了的方法,我将不胜感激。
此致
您不必使用 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
我有以下功能:
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 的计算添加了一个名为 direction 的列 - 如您所见,如果角度为零,则会有一个零除法,因此错误,现在我可以创建一个函数来添加一个 if,这样它就为零除法的值保持为零但是在我的 lambda 函数中有没有一种 pythonic 的方式来做到这一点?
无论如何,如果有人知道实现此目的的简洁明了的方法,我将不胜感激。
此致
您不必使用 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