ema*_*max 11 python pandas geopandas
我将一个.csv文件作为数据框读取,如下所示:
import pandas as pd
df = pd.read_csv('myFile.csv')
df.head()
BoroName geometry
0 Brooklyn MULTIPOLYGON (((-73.97604935657381 40.63127590...
1 Queens MULTIPOLYGON (((-73.80379022888098 40.77561011...
2 Queens MULTIPOLYGON (((-73.8610972440186 40.763664477...
3 Queens MULTIPOLYGON (((-73.75725671509139 40.71813860...
4 Manhattan MULTIPOLYGON (((-73.94607828674226 40.82126321...
Run Code Online (Sandbox Code Playgroud)
我想将其转换为 geopandas 数据框。
import geopandas as gpd
crs = {'init': 'epsg:4326'}
gdf = gpd.GeoDataFrame(df, crs=crs).set_geometry('geometry')
Run Code Online (Sandbox Code Playgroud)
但我收到以下错误
TypeError: Input must be valid geometry objects: MULTIPOLYGON (((-73.97604935657381 40.631275905646774, -73.97716511994669 40.63074665412933,....
Run Code Online (Sandbox Code Playgroud)
小智 13
出于某种原因,geopandas 似乎无法从 Pandas 数据帧转换几何列。你可以尝试两种方法。
第 1 条:尝试使用 geopandas 直接加载 csv
gdf = gpd.read_file('myFile.csv')
gdf.crs = 'epsg:4326'
Run Code Online (Sandbox Code Playgroud)
数字 2:wkt.loads在将数据框转换为地理数据框之前,尝试在列上应用shapely 函数。
from shapely import wkt
df['geometry'] = df['geometry'].apply(wkt.loads)
gdf = gpd.GeoDataFrame(df, crs='epsg:4326')
Run Code Online (Sandbox Code Playgroud)
无论哪种方式都应该有效。祝你好运!
小智 13
你也可以试试这个:
gdf = gpd.GeoDataFrame(
df, geometry=gpd.points_from_xy(df.latitude, df.longitude))
Run Code Online (Sandbox Code Playgroud)
这会将这些经纬度列转换为点
| 归档时间: |
|
| 查看次数: |
11605 次 |
| 最近记录: |