IP2Location 记录到 Pandas DataFrame

Posted

技术标签:

【中文标题】IP2Location 记录到 Pandas DataFrame【英文标题】:IP2Location record to Pandas DataFrame 【发布时间】:2021-01-30 15:14:06 【问题描述】:

我已使用 IP2Location 收集有关 IP 地址的信息,并且我希望它在 DataFrame 中,但是当我尝试使用 pd.json_normalize(ip) 时出现错误。 AttributeError: 'IP2LocationRecord' object has no attribute 'values'

我从IP2Location得到的信息就是这种格式,

'ip': '66.249.79.244', 'country_short': 'US', 'country_long': 'United States of America', 'region': 'California', 'city': 'Mountain View', 'latitude': 37.405991, 'longitude': -122.078514, 'zipcode': '94043', 'timezone': '-08:00'

我也尝试过使用pd.DataFrame,但是df中的结果是空的,只看到了列名。

df = pd.DataFrame(ip, columns = ['ip','country_short','country_long','region','city','latitude','longitude','zipcode','timezone'])

预期结果

     ip               country_short    country_long        ....       zipcode      timezone
0    66.249.69.244    US               United States of America       94043        -08:00

【问题讨论】:

【参考方案1】:

请注意错误:

AttributeError: 'IP2LocationRecord' object ...

您要做的是将IP2LocationRecord 类型的对象转换为pandas.DataFrame,这是不可能的(您必须直接解压缩所有值,或者从IP2LocationRecord 的字段中创建一个字典) . 你在这里看到的:

'ip': '66.249.79.244', 'country_short': 'US', 'country_long': 'United States of America', 'region': 'California', 'city': 'Mountain View', 'latitude': 37.405991, 'longitude': -122.078514, 'zipcode': '94043', 'timezone': '-08:00'

实际上是repr(ip)repr python3 reference(而不是字典)

【讨论】:

以上是关于IP2Location 记录到 Pandas DataFrame的主要内容,如果未能解决你的问题,请参考以下文章

使用pandas库对csv文件进行筛选和保存

使用pandas库对csv文件进行筛选和保存

从 API 中提取数据并将记录存储在 Pandas 数据框中

是否可以更新 IP2Location 数据库?

如何使用 curl 下载 IP2Location 数据库

ip2location 仅用于查找特定位置的 IP 地址