![](/img/trans.png)
[英]Convert scientific notation (letters in decimal values) when reading excel with pandas.read_excel
[英]Pandas read JSON causes values to convert into scientific notation
我正在使用其中一个列包含27位数字的pandas Dataframe。 我使用以下方法将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)
输出:(注意col
float64
)
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
pd.read_json(df, orient='split', dtype = {"column_name": object})
感谢您的所有帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.