python - Geopandas .merge() 产生奇怪的结果
问题描述
我一直在尝试基于列合并两个 geopandas 数据框,并且得到了一些非常奇怪的结果。为了测试这一点,我制作了两个简单的数据框,并将它们合并:
import pandas as pd
import geopandas as gpd
df = pd.DataFrame(
{'City': ['Buenos Aires', 'Brasilia', 'Santiago', 'Bogota', 'Caracas'],
'Country': ['Argentina', 'Brazil', 'Chile', 'Colombia', 'Venezuela'],
'Latitude': [-34.58, -15.78, -33.45, 4.60, 10.48],
'Longitude': [-58.66, -47.91, -70.66, -74.08, -66.86]})
gdf = gpd.GeoDataFrame(
df, geometry=gpd.points_from_xy(df.Longitude, df.Latitude))
df2 = pd.DataFrame(
{'Capital': ['Buenos Aires', 'Brasilia', 'Santiago', 'Bogota',
'Caracas'],
'Abbreviation': ['ARG', 'BRA', 'CHI', 'COL', 'VZL']})
combined_df = gdf.merge(df2, left_on='City', right_on='Capital')
print(combined_df)
当我打印结果时,我得到了我的预期:
City Country ... Capital Abbreviation
0 Buenos Aires Argentina ... Buenos Aires ARG
1 Brasilia Brazil ... Brasilia BRA
2 Santiago Chile ... Santiago CHI
3 Bogota Colombia ... Bogota COL
4 Caracas Venezuela ... Caracas VZL
这两个数据集基于它们的共同列合并,即“城市”列和“资本”列。
我还有其他一些我正在使用的数据。这是它的链接
这两个文件都是我作为地理数据框读入的地理包。数据框 1 有 16166 行。数据框 2 有 15511 行。它们有一个共同的 ID 列,“ALTPARNO”和“altparno”。这是我试图用来读入和合并它们的代码:
import geopandas as gpd
dataframe1 = gpd.read_file(filepath, layer='allkeepers_2019')
dataframe2 = gpd.read_file(filepath, layer='keepers_2019')
results = dataframe1.merge(dataframe2, left_on='altparno', right_on='ALTPARNO')
当我查看我的结果时,我有一个包含超过 400 万行的数据框(应该在 15,000 左右)。
到底是怎么回事?
解决方案
推荐阅读
- reactjs - 在 componentDidMount 上反应设置检查属性
- python - 尝试部署烧瓶服务器时出现 Nginx 错误
- three.js - gl.DrawElements 调用了多少次?
- android - 如何以编程方式在 oppo 设备中打开节能设置?
- python - 如何使用 Odoo 10CE 中的保存文件对话框保存文件?
- javascript - 如何在另一个表中动态添加一个表
- sql - SQL查找动态列并更新值
- database - 如何检查 mongodb 集合中特定 _id 的字段是否存在?
- sas - 如何将spk文件中已有的时间编辑为当前时间?
- android - Adding markers from Google Maps in Asynctask