Pandas: يزيل read_json () الشرطة السفلية ويحول السلسلة إلى عدد صحيح عند وجود الأرقام والشرطة السفلية فقط

تم إنشاؤها على ١٤ أكتوبر ٢٠١٧  ·  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
بتات الثعبان: 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: لا شيء

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 التقييمات