Python 从经纬度获取国家名称

Python 从经纬度获取国家名称,python,pandas,Python,Pandas,我想从我的数据框中位置的纬度和经度中提取国家名称 以下是我的数据示例: {'Country/Region': {0: nan, 1: nan, 2: nan, 3: nan, 4: nan}, 'Lat': {0: '33.93911', 1: '41.1533', 2: '28.0339', 3: '42.5063', 4: '-11.2027'}, 'Long': {0: '6

我想从我的数据框中位置的纬度和经度中提取国家名称

以下是我的数据示例:

{'Country/Region': {0: nan, 1: nan, 2: nan, 3: nan, 4: nan},
         'Lat': {0: '33.93911',
          1: '41.1533',
          2: '28.0339',
          3: '42.5063',
          4: '-11.2027'},
         'Long': {0: '67.709953',
          1: '20.1683',
          2: '1.6596',
          3: '1.5218',
          4: '17.8739'},
         'Province/State': {0: nan, 1: nan, 2: nan, 3: nan, 4: nan}}
注意:这是一个pandas数据框,我只是为了问这个问题而将其转换为字典

这就是我尝试过的:

df[['Lat','Long']].apply(lambda x,y : geocoder.osm([x,y], method='reverse'),axis=1)
从中,我得到了以下错误消息:

TypeError: ("<lambda>() missing 1 required positional argument: 'y'", 'occurred at index 0')
TypeError:(“()缺少1个必需的位置参数:“y”,在索引0处出现)

x
中的lambda将是数据帧中的一行,这是您需要执行的操作

df.apply(lambda行:geocoder.osm([row['Lat'],row['Long'],method='reverse'),axis=1)

<如果你的数据集很大,考虑使用

我认为你的lambda应该取2个ARGs,<代码> df[[Lat','Lo'`] ]。(lambda x,y:地理编码器.OSM([x,y],方法=‘反转’),轴=1)< /代码>?@ QuangHoang用我的建议编辑了我的答案,仍然得到了类似的结果。error@SuperStormer谢谢你注意到这一点,编辑问题您需要阅读
apply
的文档,并对其工作原理的假设进行一些基本测试。事实上,您现在可以删除
[[['Lat','Long']]
。谢谢,出于好奇,为什么大型数据库的速度非常慢?@Emm
apply
在pandas中按顺序运行,这样您就不会使用所有的核心,如果您使用的是公共地理编码服务,那么请注意不要达到极限