繁体   English   中英

Applying.get() function 在 Pandas 系列上

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM