使用pandas在csv中将utm转换为lat long

时间:2018-04-18 03:02:51

标签: python pandas latitude-longitude utm

import pandas
import utm
df = pd.read_csv("0006.csv")

这是导入的csv文件的输出

       Description     PositionDateTime          X           Y       Z  \
0           DT0006  2018-01-01 00:00:08  668471.51  7473216.92   43.60   
1           DT0006  2018-01-01 00:00:09  668471.51  7473216.90   43.62   
2           DT0006  2018-01-01 00:00:39  668471.63  7473216.49   44.00   
3           DT0006  2018-01-01 00:01:02  668471.66  7473216.41   44.07   
4           DT0006  2018-01-01 00:01:14  668471.66  7473216.39   44.09   
5           DT0006  2018-01-01 00:01:48  668471.67  7473216.37   44.11   
6           DT0006  2018-01-01 00:01:54  668471.67  7473216.37   44.11   
7           DT0006  2018-01-01 00:02:36  668471.67  7473216.37   44.11   
8           DT0006  2018-01-01 00:02:39  668471.67  7473216.37   44.11   
9           DT0006  2018-01-01 00:03:18  668451.81  7473220.04   52.36   

假设Zone是45K,我想用utm将X,Y转换成纬度和经度。 到目前为止,我知道如何像这样转换

utm.to_latlon(???, ???, ??, '?')

如何将lat和long的每个数字转换为单独的列?

我做的是这个

df['lat'], df['long'] = utm.to_latlon(df.X, df.Y, 45, 'K')

这是错误的,仍在寻找如何做到这一点。

非常感谢

1 个答案:

答案 0 :(得分:1)

只需 apply() merge()

def rule(row):
    lat, lon = utm.to_latlon(row["X"], row["Y"], 45, 'K')
    return pd.Series({"lat": lat, "long": long})
df.merge(df.apply(rule, axis=1), left_index= True, right_index= True)