Запись IP2Location в Pandas DataFrame
Я использовал 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 ...
То, что вы пытаетесь сделать, это преобразовать объект типа в
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 (а не словарь)