我试图通过使用属性联接来合并熊猫数据和地质公园。我使用的是一个美国县形状文件(https://geonet.esri.com/thread/24614 first response)和一个csv文件(http://water.usgs.gov/watuse/data/2010/index.html是第一个Excel格式,然后保存为csv)。使用FIPS连接数据后,我尝试打印新的geodataframe,但只打印上面空的GeoDataFrame消息的标题。这是我正在使用的代码
from matplotlib import pyplot as plt
import csv
import numpy as np
import datetime
import pandas as pd
import geopandas as gpd
import csv
from shapefile import Reader
df1 = pd.read_csv('usco2010.csv')
#Reads csv file and puts it into a dataframe
df2 = pd.DataFrame({'STATE':df1['STATE'],'COUNTY':df1['COUNTY'],'FIPS':df1['FIPS'],'Se rPop10^3':df1['TP-TotPop'],'WtrWthdrwl_MGD':df1['PS-WSWFr']})
#Takes the data we want from df1 and creates a new dataframe df2: Statename, County name, FIPS, Served Population in 1000s, Surface water withdrawls in MGD
counties = gpd.read_file('UScounties')
#creates a GeoDataFrame for the US counties by using UScounties shapefile
print(counties.head())
print(df2.head())
counties = counties.merge(df2, on='FIPS') #Empty GeoDataFrame
#merges counties and df2 with same FIPS
print(counties)GeoDataFrame不应该将来自两个对象的数据合并吗?我想制作一张地表水提取的合唱地图。
对不起,如果我们不应该列出我们使用的数据,我希望尽可能具体。我刚开始使用python,所以如果这是一个简单的问题,我很抱歉,但是google和这个站点上的搜索没有显示出类似的问题已经被回答了。
发布于 2016-10-04 11:34:44
刚刚检查了你的问题。据我所见,问题是您试图在两种不同数据类型的位置上合并的列。您在县数据集中的列是一个类型对象(例如,它包含字符串),而df2"FIPS“是"int64”类型。这就是我所做的,合并的工作。仍然要检查合并是否适当地执行:
us_data = pd.read_csv('usco2010.csv')
counties = gp.read_file('UScounties.shp')
counties["FIPS"] = counties["FIPS"].astype(int)
pd.merge(counties, us_data, on="FIPS")https://stackoverflow.com/questions/39840337
复制相似问题