问题风Pandas映射方法(用于从另一个数据帧添加数据帧中的列)



我有一个带有"国家"列和一些其他数据的数据图,我想从另一个数据帧中为每个国家添加经度和纬度。我用一个";地图";在第二个数据帧中查找每个国家并添加到第一个数据帧的方法。

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')

最新更新