python - 将 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
解决方案
这应该可以解决问题,使用 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")
看看文档
推荐阅读
- java - 如何将经典的 cronjobs 转换为quartz-scheduler 的 cron 表达式
- google-apps-script - 链接到 getlastrow 的脚本出错 - 我认为
- flutter - Flutter TextFormField 换行并自动适配高度
- mysql - 更新与其他列具有一个或多个相同值的列值
- spring-boot - 海王星DB图遍历管理的建议
- c# - 急切加载的数据错误,说明上下文已处理
- c++ - 比较2个大小不等的地图c ++
- excel - sumproduct 包含 excel 中的其他函数
- php - 是否可以从“EUR”或“GBP”等货币代码动态转换货币符号?
- git - Intelij IDEA ssh-key git 存储库连接被拒绝