我试图完成两个GeodataFrames之间的空间连接,但是出现此错误:
ValueError: You are trying to merge on object and int64 columns. If you wish to proceed you should use pd.concat.
这是我的代码/计划,导致我犯了该错误;
两个数据框分别命名为tag_df
和cpr_df
,其中包含纬度和经度值,因此我首先为两者创建了一个地理数据框;
tag_df['coordinates']=list(zip(tag_df.Longitude,tag_df.Latitude))
tag_df['coordinates']=tag_df['coordinates'].apply(Point)
tag_gdf=gpd.GeoDataFrame(tag_df,geometry='coordinates',crs={'init' :'epsg:4326'})
cpr_df['coordinates']=list(zip(cpr_df.sample_longitude_decimal,cpr_df.sample_latitude_decimal))
cpr_df['coordinates']=cpr_df['coordinates'].apply(Point)
cpr_gdf=gpd.GeoDataFrame(cpr_df,geometry='coordinates',crs={'init' :'epsg:4326'})
然后我为cpr_gdf
创建了一个5海里的缓冲区:
cpr_gdf['p_buffer']=cpr_gdf['coordinates'].buffer(5*(1/60))
我现在想进行空间连接,以查找哪些tag_gdf
值位于哪些缓冲的cpr_gdf
值中;
tag_in_cpr=sjoin(tag_gdf,cpr_gdf,how='left',op='within')
哪个出现此错误:
ValueError: You are trying to merge on object and int64 columns. If you wish to proceed you should use pd.concat
任何帮助都会很棒。