将geopandas地理数据框转换为pandas数据框的最有效方法是什么?下面是我使用的方法,是否存在另一种方法,它通常在不产生错误时更有效或更好?
import geopandas as gpd
import pandas as pd
# assuming I have a shapefile named shp1.shp
gdf1 = gpd.read_file('shp1.shp')
# then for the conversion, I drop the last column (geometry) and specify the column names for the new df
df1 = pd.DataFrame(gdf1.iloc[:,:-1].values, columns = list(gdf1.columns.values)[:-1] )
答案 0 :(得分:11)
您不需要将GeoDataFrame转换为值数组,您可以将其直接传递给DataFrame构造函数:
None
以上将保持“几何”的几何形状。列,将其作为普通DataFrame没有问题。但是,如果你真的想要删除该列,你可以这样做(假设该列被称为' geometry'):
df1 = pd.DataFrame(gdf)
两个注释:
df1 = pd.DataFrame(gdf.drop(columns='geometry'))
# for older versions of pandas (< 0.21), the drop part: gdf.drop('geometry', axis=1)
)不会获取GeoDataFrame中的数据副本。从效率的角度来看,这通常很好,但是根据您想要对DataFrame执行的操作,您可能需要实际副本:df1 = pd.DataFrame(gdf)