Pandas: read_json () удаляет подчеркивание и преобразует строку в целое число, когда присутствуют только числа и подчеркивание

Созданный на 14 окт. 2017  ·  3Комментарии  ·  Источник: pandas-dev/pandas

Образец кода

import pandas as pd

df = pd.DataFrame({'test': ['34343_43434']})
json = df.to_json(orient='records')
result = pd.read_json(json, orient='records')
print(result)

выход:
тестовое задание
0 3434343434

Описание проблемы

Похоже, что Pandas преобразует исходную строку («34343_43434») в целое число (3434343434) и удаляет подчеркивание для этого.

Это происходит только тогда, когда все символы в строке (кроме подчеркивания) являются целыми числами. Например, если исходное значение было «34343_43434X», то вывод будет правильно «34343_43434X». Эта проблема не возникает, если dtypes = False.

Ожидаемый результат

test

0 34343_43434

Вывод pd.show_versions()

[вставьте вывод pd.show_versions() сюда под этой строкой]

УСТАНОВЛЕННЫЕ ВЕРСИИ

совершить: Нет
питон: 3.6.1.final.0
Python-биты: 64
ОС: Windows
ОС-релиз: 10
машина: AMD64
процессор: Intel64 Family 6 Model 78 Stepping 3, GenuineIntel
byteorder: маленький
LC_ALL: Нет
ЯЗЫК: Нет
МЕСТО: Нет.

панды: 0.20.3
pytest: 3.0.7
пункт: 9.0.1
setuptools: 27.2.0
Cython: 0,25,2
число: 1.12.1
scipy: 0.19.0
xarray: Нет
IPython: 5.3.0
сфинкс: 1.5.6
Пэтси: 0.4.1
dateutil: 2.6.0
pytz: 2017.2
blosc: Нет
узкое место: 1.2.1
таблицы: 3.2.2
numexpr: 2.6.2
перо: нет
matplotlib: 2.0.2
openpyxl: 2.4.7
xlrd: 1.0.0
xlwt: 1.2.0
xlsxwriter: 0.9.6
лхмл: 3.7.3
BS4: 4.6.0
html5lib: 0,999
sqlalchemy: 1.1.9
pymysql: Нет
psycopg2: Нет
jinja2: 2.9.6
s3fs: Нет
pandas_gbq: Нет
pandas_datareader: Нет

Compat IO JSON

Все 3 Комментарий

Мне удалось воспроизвести это на python 3.6.2, но не на 3.5.3. Не уверен, почему

Может быть связано с PEP 515

Я могу делать это в версии 3.6, но не в версии 3.5.

In [5]: num = 34343_43434

In [6]: type(num)
Out[6]: int

In [7]: num
Out[7]: 3434343434

это досадный побочный эффект бодрости, но мне кажется, что это справедливо.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги