有没有办法防止熊猫read_json(orient='split')机会性地将 float64 列转换为 int64?



我希望能够在pandas中使用read_json来读取json文件,以与使用to_json编写相同的方式解释列。在下面的示例中,当使用to_json编写'Dec'列时,它是dtype float64, json文件将数字显示为浮点数(1.0,2.0等)。但是,当使用read_json读取它时,数据框中'Dec'的列类型最终为int64。我希望它是float64仍然,即使值碰巧都是整型。这些是使用orient='split',如果这很重要的话。有办法做到这一点吗?我正在寻找一种通用的方法,而不依赖于特定的列名,因为在实践中,我希望它能在许多不同的数据框架上工作。

tmp_file = 'c:/Temp/in_df.json'
in_df = pd.DataFrame([['A', 2.0, 4], ['B', 3.0, 2], ['C', 4.0, 3]], columns=['Key', 'Dec', 'Num'])
dec_column_type_in = in_df['Dec'].dtype # float64
in_json = in_df.to_json(path_or_buf=tmp_file, orient='split', index=False)
out_df = pd.read_json(tmp_file, orient='split')
dec_column_type_out = out_df['Dec'].dtype # int64

您可以尝试手动关闭推断

的dtypes
out_df = pd.read_json(tmp_file, orient='split', dtype=False)
print(out_df.dtypes)
Key     object
Dec    float64
Num      int64
dtype: object

最新更新