2017-06-15 123 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

看我的編輯。現在它可以工作。 –