我有以下功能:
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 方法可以做到這一點?
無論如何,如果有人知道實作這一目標的簡潔明了的方法,我將不勝感激。
問候
uj5u.com熱心網友回復:
您不必使用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
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/333450.html
