Я работаю с пакетом python под названием UTM, который преобразует координаты WGS84 в UTM и наоборот. Я хотел бы применить эту функцию к кадру данных pandas. Функция работает следующим образом:pandas - применить функцию UTM к столбцам данных данных
utm.from_latlon(51.2, 7.5)
>>> (395201.3103811303, 5673135.241182375, 32, 'U')
где вход пара координат, и она возвращает кортеж из одних и тех же координат в системе UTM. Для моих целей меня интересуют только первые два элемента кортежа.
Я работаю на Dataframe называется 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
, и я хотел бы добавить четыре столбца для каждой строки под названием 'utmminx', 'utmmax', 'utmminy', '' как utmmaxy результат применения функции utm к столбцам «minx», «maxx», «miny», «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)
Я хотел бы избежать классических петель над dataframe, как я думал, что это классический метод панды, чтобы сделать это.
Вау, мы действительно близки! Мне нравится лямбда. –
Вы избили меня за секунды =) На самом деле это может быть однострочный, например 'cities.apply (lambda x: pd.Series (utm.from_latlon (x ['minx'], x ['maxx']) [: 2])), ось = 1) ', но пришлось разбить лямбда-функцию из-за длины и удобочитаемости! – Zero