Pandas read JSON приводит к преобразованию значений в научную нотацию - PullRequest
0 голосов
/ 13 июня 2018

Я работаю с пандой Dataframe, в которой один столбец содержит 27-значный номер.Я преобразовал Dataframe в массив JSON, используя:

pd.read_json(df, orient='split')

При преобразовании массива JSON обратно в Dataframe я использовал:

 pd.read_json(df, orient='split')

Однако в преобразовании значения былипреобразован в научную запись.

Actual: 8.123456e+27
Expected: 8123456342700123300640123456

Есть ли способ, которым я могу обойти это?Извиняюсь за предоставление только кода sudo, я работаю с конфиденциальной информацией.

Ответы [ 2 ]

0 голосов
/ 13 июня 2018

Мне удалось найти обходной путь, включив дополнительный параметр в pd.read_json

pd.read_json(df, orient='split', dtype = {"column_name": object})

Я использовал это в качестве ссылки

Спасибо за всепомощь!

0 голосов
/ 13 июня 2018

Вы можете использовать

pd.set_option('display.float_format', lambda x: '%d' % x)

Например, с этим примером данных

df = pd.DataFrame([['8123456342700123300640123456']],
                   index=['row'],
                   columns=['col'])
print(df.dtypes)
dx = df.to_json(orient='split')
dg = pd.read_json(dx, orient='split')
print(dg)
print(dg.dtypes)

Вывод: (Уведомление float64 для col)

col    object
dtype: object
                             col
row 8123456342700123332831870976
col    float64
dtype: object

Чтобы изменить его обратно на объект, вы можете использовать

dg = pd.read_json(dx, orient='split').astype(object)
print(dg)
print(dg.dtypes)

Вывод:

                             col
row 8123456342700123332831870976
col    object
dtype: object
...