将geopandas地理数据框转换为pandas数据帧

时间:2018-03-27 05:18:29

标签: python pandas geopandas

将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] )

1 个答案:

答案 0 :(得分:11)

您不需要将GeoDataFrame转换为值数组,您可以将其直接传递给DataFrame构造函数:

None

以上将保持“几何”的几何形状。列,将其作为普通DataFrame没有问题。但是,如果你真的想要删除该列,你可以这样做(假设该列被称为' geometry'):

df1 = pd.DataFrame(gdf)

两个注释:

  • 通常不需要将GeoDataFrame转换为普通的DataFrame,因为您从DataFrame中了解的大多数方法都可以正常工作。当然,在某些情况下确实需要它(例如绘制没有几何图形的数据),然后上面的方法是最好的方法。
  • 第一种方式(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)