用pymap3d计算熊猫列的有效方法?

时间:2020-08-14 16:59:42

标签: python pandas geo

我有一个带有地理坐标列的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个不同的坐标系添加转换。)是否有一种“更Python化”的方式来正确利用pandas允许数据框操作的方式?

1 个答案:

答案 0 :(得分:0)

这是我想出的解决方案,它修改了原始的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)

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