我正在使用这个名为 UTM 的 python 包,它将 WGS84 坐标转换为 UTM,反之亦然。我想将此功能应用于熊猫数据框。该功能的工作原理如下:
utm.from_latlon(51.2, 7.5)
>>> (395201.3103811303, 5673135.241182375, 32, 'U')
其中输入是几个坐标,它返回 UTM 系统中相同坐标的元组。出于我的目的,我只对元组的前两个元素感兴趣。
我正在研究一个名为的数据框cities
:
City;Latitude;Longitude;minx;maxx;miny;maxy
Roma;41.892916;12.48252;11.27447419;13.69056581;40.99359439;42.79223761
Paris;48.856614;2.352222;0.985506011;3.718937989;47.95729239;49.75593561
Barcelona;41.385064;2.173403;0.974836927;3.371969073;40.48574239;42.28438561
Berlin;52.519171;13.406091;11.92835553;14.88382647;51.61984939;53.41849261
Moscow;55.755826;37.6173;36.01941671;39.21518329;54.85650439;56.65514761
由于将utm函数应用于'minx','maxx','miny',我想为每一行添加四列,称为'utmminx','utmmax','utmminy','utmmaxy' maxy' 列。到目前为止,我尝试了以下操作,将结果元组的第一个和第二个值分配给新列:
cities['utmminx'],cities['utmmaxx'] = utm.from_latlon(cities['minx'],cities['maxx'])[0],utm.from_latlon(cities['minx'],cities['maxx'])[1]
但我收到了一个ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
我试图只为函数设置第一行值并且它有效:
utm.from_latlon(cities['minx'][0],cities['maxx'][0])[0],utm.from_latlon(cities['minx'][0],cities['maxx'][0])[1]
>>> (357074.7837193568, 1246647.7959235134)
我想避免数据帧上的经典循环,因为我认为有一种经典的 pandas 方法可以做到这一点。