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
بتات الثعبان: 64
نظام التشغيل: Windows
إصدار نظام التشغيل: 10
الجهاز: AMD64
المعالج: Intel64 Family 6 Model 78 Stepping 3، GenuineIntel
byteorder: قليلا
LC_ALL: لا شيء
لانغ: لا شيء
LOCALE: لا شيء
الباندا: 0.20.3
بيتيست: 3.0.7
النقطة: 9.0.1
أدوات الإعداد: 27.2.0
سايثون: 0.25.2
numpy: 1.12.1
scipy: 0.19.0
xarray: لا شيء
IPython: 5.3.0
أبو الهول: 1.5.6
باتسي: 0.4.1
داتوتيل: 2.6.0
بيتز: 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
lxml: 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: لا شيء
لقد تمكنت من تكرار هذا على 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
هذا أثر جانبي مؤسف للبيب ، لكن هذا يبدو صالحًا بالنسبة لي.