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})
感谢大家的帮助!
我正在使用 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})
感谢大家的帮助!