我有一个带有"国家"列和一些其他数据的数据图,我想从另一个数据帧中为每个国家添加经度和纬度。我用一个";地图";在第二个数据帧中查找每个国家并添加到第一个数据帧的方法。
df_filteres['longitude'] = df_filteres['Country'].map(lambda item : df_countries[df_countries['country'] == item].iloc[0, 2])
如果我将"item"替换为一个示例国家名称(例如德国(,它会起作用,但使用"item"会返回此错误:
IndexError:单个位置索引器越界
哪个部分不正确?
您可以尝试:
df_filteres['longitude'] = df_filteres['Country'].map(df_countries.set_index('country').iloc[:, 1])
有一种更好的方法可以在不使用map的情况下解决这个问题。仔细阅读连接/合并/连接文档,以更好地理解正在执行的操作风格,并找到合适的示例。
通常,对于这个问题,您会对键country
进行左合并,但只对属于另一个数据帧的列longitude
进行左合并。
df_subset = df_countries[['country', 'longitude']]
df_filteres = df_filteres.merge(df_subset, on='country', how='left')