Pandas DataFrame:使用Lambda函数在新列中将WKT转换为GeoJSON [英] Pandas DataFrame: convert WKT into GeoJSON in a new column using Lambda function

查看:310
本文介绍了Pandas DataFrame:使用Lambda函数在新列中将WKT转换为GeoJSON的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一些这种格式的数据:

I have some data in this format:

Dep       Dest        geom
----      ----        -----
EDDF      KIAD        LINESTRING(3.961389 43.583333, 3.968056 43.580....

其中包含飞行轨迹. geom列包含WKT格式的坐标.可以通过库 geomet 将它们转换为GeoJSON格式,想在新列中做.

Which contains flight trajectories. The geom column contains the coordinates in WKT format. It is possible to convert them via the library geomet to GeoJSON format, which I want to do in a new column.

为了对熊猫有效地做到这一点,我正在尝试做:

In order to do this efficiently with Pandas, I am trying to do:

from geomet import wkt
import json

df = .... #load data to df
df['geojson'] =  df['geom'].apply(lambda x: json.dumps(wkt.loads(x['geom'] )))

这不起作用.有办法实现吗?

Which does not work. Any way to make it happen?

推荐答案

尝试更改以下行:

df['geojson'] =  df['geom'].apply(lambda x: json.dumps(wkt.loads(x['geom'] )))

进入这一个:

df['geojson'] =  df['geom'].apply(lambda x: json.dumps(wkt.loads(x)))

这将产生预期的结果:

from geomet import wkt
import json

#Generate dataframe
df = pd.DataFrame({"Dep":["EDDf"],
                   "Dest": ["KIAD"],
                   "geom": ["LINESTRING(3.961389 43.583333, 3.968056 43.580)"]})


#Apply function to create new column
df["geojson"] = df["geom"].apply(lambda x: json.dumps(wkt.loads(x)))

这将创建:

    Dep  Dest                                             geom                                            geojson
0  EDDf  KIAD  LINESTRING(3.961389 43.583333, 3.968056 43.580)  {"type": "LineString", "coordinates": [[3.9613...

这篇关于Pandas DataFrame:使用Lambda函数在新列中将WKT转换为GeoJSON的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆