Pandas: read_json () remove sublinhado e converte string em inteiro quando apenas números e sublinhado estão presentes

Criado em 14 out. 2017  ·  3Comentários  ·  Fonte: pandas-dev/pandas

Amostra de Código

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)

saída:
teste
0 3434343434

Descrição do Problema

O Pandas parece estar convertendo a string inicial ("34343_43434") em um número inteiro (3434343434) e remove o sublinhado para fazer isso.

Isso ocorre apenas quando todos os caracteres na string (além do sublinhado) são inteiros. Por exemplo, se o valor inicial fosse "34343_43434X", a saída seria corretamente "34343_43434X". Esse problema não ocorre quando dtypes = False.

Saída Esperada

test

0 34343_43434

Resultado de pd.show_versions()

[cole o resultado de pd.show_versions() aqui abaixo desta linha]

VERSÕES INSTALADAS

commit: Nenhum
python: 3.6.1.final.0
python-bits: 64
SO: Windows
Versão do sistema operacional: 10
máquina: AMD64
processador: Intel64 Family 6 Model 78 Stepping 3, GenuineIntel
byteorder: pouco
LC_ALL: Nenhum
LANG: Nenhum
LOCALE: Nenhum. Nenhum

pandas: 0,20,3
pytest: 3.0.7
pip: 9.0.1
ferramentas de configuração: 27.2.0
Cython: 0.25.2
numpy: 1.12.1
scipy: 0.19.0
xarray: Nenhum
IPython: 5.3.0
esfinge: 1.5.6
patsy: 0.4.1
dateutil: 2.6.0
pytz: 2017.2
blosc: nenhum
gargalo: 1.2.1
tabelas: 3.2.2
numexpr: 2.6.2
pena: nenhuma
matplotlib: 2.0.2
openpyxl: 2.4.7
xlrd: 1.0.0
xlwt: 1.2.0
xlsxwriter: 0.9.6
lxml: 3.7.3
bs4: 4.6.0
html5lib: 0,999
sqlalchemy: 1.1.9
pymysql: Nenhum
psycopg2: Nenhum
jinja2: 2.9.6
s3fs: nenhum
pandas_gbq: Nenhum
pandas_datareader: Nenhum

Compat IO JSON

Todos 3 comentários

Consegui replicar isso no python 3.6.2, mas não no 3.5.3. Não tenho certeza porque embora

Deve estar relacionado ao PEP 515

Sou capaz de fazer coisas assim no 3.6, mas não no 3.5

In [5]: num = 34343_43434

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

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

esse é um efeito colateral infeliz do estímulo, mas parece válido para mim.

Esta página foi útil?
0 / 5 - 0 avaliações