Pandas 读取 JSON 导致值转换为科学记数法

Pandas read JSON causes values to convert into scientific notation

我正在使用 pandas 数据框,其中一列包含一个 27 位数字。我使用以下方法将 Dataframe 转换为 JSON 数组:

pd.read_json(df, orient='split')

将 JSON 数组转换回 Dataframe 时,我使用了:

 pd.read_json(df, orient='split')

但是,在转换过程中,这些值被转换为科学计数法。

Actual: 8.123456e+27
Expected: 8123456342700123300640123456

有什么办法可以解决这个问题吗?很抱歉只提供了一个 sudo 代码,我正在处理机密信息。

您可以使用

pd.set_option('display.float_format', lambda x: '%d' % x)

例如,使用此示例数据

df = pd.DataFrame([['8123456342700123300640123456']],
                   index=['row'],
                   columns=['col'])
print(df.dtypes)
dx = df.to_json(orient='split')
dg = pd.read_json(dx, orient='split')
print(dg)
print(dg.dtypes)

输出:(注意 float64 col

col    object
dtype: object
                             col
row 8123456342700123332831870976
col    float64
dtype: object

要将其改回对象,您可以使用

dg = pd.read_json(dx, orient='split').astype(object)
print(dg)
print(dg.dtypes)

输出:

                             col
row 8123456342700123332831870976
col    object
dtype: object

我设法通过在 pd.read_json

中包含一个附加参数找到了解决方法
pd.read_json(df, orient='split', dtype = {"column_name": object})

I used this as reference

感谢大家的帮助!