#json #pandas
#json #pandas
Вопрос:
У меня есть список объектов в формате JSON. Каждый объект имеет два свойства: id(строка) и arg(число).
Когда я использую pandas.read_json(...)
, результирующий фрейм данных также интерпретирует идентификатор как число, что вызывает проблемы, поскольку информация теряется.
import pandas as pd
json = '[{ "id" : "1", "arg": 1 },{ "id" : "1_1", "arg": 2}, { "id" : "11", "arg": 2}]'
df = pd.read_json(json)
Я бы ожидал, что у меня будет такой фрейм данных:
id arg
0 "1" 1
1 "1_1" 2
2 "11" 2
Я получаю
id arg
0 1 1
1 11 2
2 11 2
и внезапно, когда-то уникальный идентификатор больше не так уникален.
Как я могу сказать pandas прекратить это делать?
Мой поиск до сих пор давал результаты только там, где люди пытались достичь противоположного — иметь столбцы строки, интерпретируемые как числа. Я совершенно не хочу достигать этого в этом случае!
Ответ №1:
Используйте dtype
параметр для предотвращения преобразования id
в числа:
df = pd.read_json(json, dtype={'id':str})
print (df)
id arg
0 1 1
1 1_1 2
2 11 2
print (df.dtypes)
id object
arg int64
dtype: object
Ответ №2:
Если вы установите dtype
для параметра значение False
, read_json
типы не будут выводиться автоматически:
df = pd.read_json(json, dtype=False)