【问题标题】:Pandas DataFrame: convert WKT into GeoJSON in a new column using Lambda functionPandas DataFrame:使用 Lambda 函数在新列中将 WKT 转换为 GeoJSON
【发布时间】:2017-06-15 11:49:00
【问题描述】:

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

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

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

为了使用 Pandas 有效地做到这一点,我正在尝试这样做:

from geomet import wkt
import json

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

这不起作用。有什么方法可以实现吗?

【问题讨论】:

  • 它给我的错误是“字符串索引必须是整数”。

标签: python pandas lambda geojson wkt


【解决方案1】:

尝试更改以下行:

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...

【讨论】:

  • 你好 Marjan,谢谢,现在我得到 KeyError: ('geom', 'occured at index dep')
猜你喜欢
  • 2023-03-26
  • 1970-01-01
  • 1970-01-01
  • 2015-03-23
  • 1970-01-01
  • 1970-01-01
  • 2021-03-01
  • 2017-03-17
  • 2017-03-23
相关资源
最近更新 更多