首页 > 解决方案 > 将 csv 合并到 shp:使用 DataFrame 而不是 GeoDataFrame 返回

问题描述

我想将表格加入 shp 并使用 Python 绘制地图。但是,合并的 DataFrame 不再是 GeoDataFrame ......为什么???哪位大神帮忙看看~~~

# Important library for many geopython libraries
!apt install gdal-bin python-gdal python3-gdal 
# Install rtree - Geopandas requirment
!apt install python3-rtree 
# Install Geopandas
!pip install git+git://github.com/geopandas/geopandas.git
# Install descartes - Geopandas requirment
!pip install descartes 
# Install Folium for Geographic data visualization
!pip install folium
# Install plotlyExpress
!pip install plotly_express

# Import packages
import pandas as pd
import numpy as np
import geopandas as gpd
from shapely.geometry import Point
import matplotlib
import matplotlib.pyplot as plt 
import folium
import plotly_express as px


file1 = 'GEO.shp'
GEO = gpd.read_file(file1)

file2 = 'data.csv'
DATA = gpd.read_file(file2)

Join = GEO.merge(DATA, left_on='Code', right_on='M_code')

type(Join)

## Return --> pandas.core.frame.DataFrame

标签: pythondataframecsvmergeshapefile

解决方案


这应该可以解决问题,使用 pandas 读取 csv,而不是 geopandas,否则您将获得一个充满空值的几何列。

import pandas as pd
import geopandas as gpd

file1 = 'GEO.shp'
GEO = gpd.read_file(file1)

file2 = 'data.csv'
DATA = pd.read_csv(file2) # <-- this should use pandas!!!

Join = GEO.merge(DATA, left_on="Code", right_on="M_code")
type(Join)
geopandas.geodataframe.GeoDataFrame
# OR
Join = pd.merge(GEO, DATA, left_on="Code", right_on="M_code")

看看文档


推荐阅读