2017-06-15 165 views
0

转换成高铁总站在GeoJSON的一个新的专栏中,我有这种格式的一些数据:熊猫据帧:使用lambda功能

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

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

为了有效地与大熊猫做到这一点,我试图做的事:

from geomet import wkt 
import json 

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

不工作。任何方式来实现它?

+0

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

回答

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

你好Marjan,谢谢,现在我得到KeyError :('geom','发生在index dep') – Ulu83

+0

看我的编辑。现在它可以工作。 –