添加一个 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