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
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.
test
0 34343_43434
pd.show_versions()
[fügen Sie die Ausgabe von pd.show_versions()
hier unter dieser Zeile ein]
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
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.