[英]Applying .get() function On a Pandas series
我正在研究样本数据集以从地址中检索位置信息(为了识别目的,更改了一些细节);
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 package 获取纬度和经度信息。 语法如下;
!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}'
我正在尝试在整个 pandas 系列(矢量形式)上应用 function 并将纬度和经度检索为两个不同的列。 这是我的尝试:
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'
您可以使用以下方法将此修复程序应用于您的 dataframe:
temp2['IP_ADDR'] = temp2['IP_ADDR'].replace(r'\.0+\.', '.0.', regex=True)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.