Geopandas geodataframeをpandas dataframeに変換する最も効率的な方法は何ですか?以下は私が使用する方法ですが、エラーを生成しない場合に、より効率的またはより一般的な別の方法はありますか?
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] )
GeoDataFrameを値の配列に変換する必要はありません。それを直接DataFrameコンストラクターに渡すことができます。
_df1 = pd.DataFrame(gdf)
_
上記は 'geometry'列を保持しますが、これは通常のDataFrameとして問題ありません。しかし、実際にその列を削除したい場合は、次のようにできます(列が「ジオメトリ」と呼ばれていると仮定)。
_df1 = pd.DataFrame(gdf.drop(columns='geometry'))
# for older versions of pandas (< 0.21), the drop part: gdf.drop('geometry', axis=1)
_
2つのメモ:
df1 = pd.DataFrame(gdf)
)は、GeoDataFrame内のデータのコピーを取得しません。これは多くの場合、効率の観点からは適切ですが、DataFrameで何をしたいかによっては、実際のコピーが必要になる場合があります。df1 = pd.DataFrame(gdf, copy=True)