【问题标题】:Efficient way to calculate pandas columns with pymap3d?用pymap3d计算熊猫列的有效方法?
【发布时间】:2020-12-04 14:17:09
【问题描述】:

我有一个带有地理坐标列的 pandas 数据框,我正在使用 pymap3d 将位置转换为其他坐标系。我实现的一个典型功能是:

def append_enu(df, observerlla):
e = []
n = []
u = []
for index, row in df.iterrows():
    tmpe, tmpn, tmpu = pm.geodetic2enu( row["lat_deg"], row["lon_deg"], row["alt_m"], *observerlla )
    e.append(tmpe)
    n.append(tmpn)
    u.append(tmpu)
df["enu_e_m"] = e
df["enu_n_m"] = n
df["enu_u_m"] = u
return df    

这可行,但我发现它非常慢。 (我的表有超过 700000 行,我正在为 3 个不同的坐标系添加转换。)是否有一种“更 Pythonic”的方式来正确利用 Pandas 允许数据框操作的方式?

【问题讨论】:

  • 听起来像broadcasting 可能是您正在寻找的。它可以在任何 numpy/pandas 数组的列或行中快速应用函数

标签: python pandas geo


【解决方案1】:

这是我想出的解决方案,它修改了原始 DataFrame 而不是从函数返回一个新的:

(df['enu_e_m'], df['enu_n_m'], df['enu_u_m']) = pm.geodetic2enu(df['lat_deg'], df['lon_deg'], df['alt_m'], *observerlla)

所以,是的,“它确实有效。”

【讨论】:

    猜你喜欢
    • 2017-09-21
    • 1970-01-01
    • 2020-07-24
    • 2016-09-18
    • 2013-05-12
    • 1970-01-01
    • 1970-01-01
    • 2013-12-03
    • 1970-01-01
    相关资源
    最近更新 更多