Pandas: read_json() entfernt den Unterstrich und wandelt den String in den Integer um, wenn nur Zahlen und Unterstrich vorhanden sind

Erstellt am 14. Okt. 2017  ·  3Kommentare  ·  Quelle: pandas-dev/pandas

Codebeispiel

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)

Ausgang:
Prüfung
0 3434343434

Problembeschreibung

Pandas scheint die Anfangszeichenfolge ("34343_43434") in eine ganze Zahl (3434343434) zu konvertieren und entfernt dafür den Unterstrich.

Dies tritt nur auf, wenn alle Zeichen in der Zeichenfolge (außer dem Unterstrich) ganze Zahlen sind. Wenn der Anfangswert beispielsweise "34343_43434X" wäre, würde die Ausgabe korrekt "34343_43434X" sein. Dieses Problem tritt nicht auf, wenn dtypes=False ist.

Erwartete Ausgabe

test

0 34343_43434

Ausgabe von pd.show_versions()

[fügen Sie die Ausgabe von pd.show_versions() hier unter dieser Zeile ein]

INSTALLIERTE VERSIONEN

verpflichten: Keine
Python: 3.6.1.final.0
Python-Bits: 64
Betriebssystem: Windows
OS-Version: 10
Maschine: AMD64
Prozessor: Intel64 Family 6 Model 78 Stepping 3, GenuineIntel
Byte-Reihenfolge: wenig
LC_ALL: Keine
SPRACHE: Keine
LOKAL: Keine.Keine

Pandas: 0.20.3
pytest: 3.0.7
Pip: 9.0.1
Setuptools: 27.2.0
Cython: 0.25.2
numpy: 1.12.1
scipy: 0.19.0
Röntgenbild: Keine
IPython: 5.3.0
Sphinx: 1.5.6
patsy: 0.4.1
dateutil: 2.6.0
pytz: 2017.2
Block: Keine
Flaschenhals: 1.2.1
Tabellen: 3.2.2
numexpr: 2.6.2
Feder: Keine
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
Sqlalchemie: 1.1.9
pymysql: Keine
psycopg2: Keine
jinja2: 2.9.6
s3fs: Keine
pandas_gbq: Keine
pandas_datareader: Keine

Compat IO JSON

Alle 3 Kommentare

Ich konnte dies auf Python 3.6.2 replizieren, aber nicht auf 3.5.3. Bin mir aber nicht sicher warum

Könnte mit PEP 515 zusammenhängen

Ich kann solche Dinge in 3.6 tun, aber nicht in 3.5

In [5]: num = 34343_43434

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

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

Dies ist eine unglückliche Nebenwirkung des Peps, aber das sieht für mich gültig aus.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen