我正在处理样本数据集,以从地址中检索位置信息(出于识别目的更改了一些详细信息)
temp2=pd.DataFrame({'USER_ID':[1268,12345,4204,4208], 'IP_ADDR':['142.176.00.83','24.000.63.230','187.178.252.99','187.178.250.99']})
我的目标是使用ip2geotools
python包获取纬度和经度信息。语法如下
!pip install ip2geotools
response = DbIpCity.get(a, api_key='free')
json_file = response.to_json()
其中a='142.176.00.83'
。然后我们得到一个类似这样的JSON文件
'{"ip_address": "142.176.00.83", "city": "Charlotte", "region": "Prince Edward", "country": "CA", "latitude": 46.2, "longitude": -63.131}'
我试图将该函数应用于整个熊猫系列(矢量形式),并将纬度和经度作为两个不同的列检索。以下是我的尝试:
temp2['y'] = temp2['IP_ADDR'].apply(lambda x: DbIpCity.get(x, api_key='free'))
但它似乎不喜欢这种语法,InvalidRequestError:
但是如果我在一个字符串上执行代码,它就可以正常工作
DbIpCity.get('2401:4900:40cc:e9cc:6ccc:348e:4020:2593', api_key='free')
ip2geotools.models.IpLocation(2401:4900:40cc:e9cc:6ccc:348e:4020:2593)
另一方面,如果没有报价,则失败
DbIpCity.get(2401:4900:40cc:e9cc:6ccc:348e:4020:2593, api_key='free')
SyntaxError: invalid syntax
但我的数据周围没有引号。如果我尝试添加引号,它将失败
i=str(2401:4900:40cc:e9cc:6ccc:348e:4020:2593)
print("'"+str(i)+"'")
i=str(2401:4900:40cc:e9cc:6ccc:348e:4020:2593)
^
SyntaxError: invalid syntax
我可以得到一些关于如何矢量化此操作和从JSON文件检索字段的帮助吗。谢谢
该错误是由ip2geotools而不是pandas引发的,因为IP格式不正确。将IP更改为每个部分中只有一个0后,代码对我有效
即,将
'24.000.63.230'
更改为'24.0.63.230'
您可以使用以下方法将此修复程序应用于数据帧:
相关问题 更多 >
编程相关推荐