我一直试图基于一个列合并两个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
这两个数据集基于它们的公共列(“城市”列和“资本”列)合并。
我还有一些其他数据正在使用。 Here is a link to it
这两个文件都是我以地理数据框形式阅读的地理包。数据框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行)。
这是怎么回事?