【问题标题】:Merge csv to shp: return with DataFrame instead of GeoDataFrame将 csv 合并到 shp:使用 DataFrame 而不是 GeoDataFrame 返回
【发布时间】:2021-03-03 04:30:20
【问题描述】:

我想将表格加入 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

【问题讨论】:

  • 除非有 geometry 列,否则您无法将 csv 文件连接到 GeoDataFrame。

标签: python dataframe csv merge shapefile


【解决方案1】:

这应该可以解决问题,使用 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")

看看docs

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-16
    • 2021-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-18
    • 2019-02-08
    相关资源
    最近更新 更多