Python 当存在空值时,json_normalize将int转换为float

Python 当存在空值时,json_normalize将int转换为float,python,pandas,dataframe,Python,Pandas,Dataframe,我试图使用json\u normalize将一些json扁平化为一个数据帧。如果没有空值,它将按预期工作: import pandas as pd from pandas.io.json import json_normalize json = [{"test": 1}, {"test": 2}, {"test": 3}] df = json_normalize(json) print(df) 返回: test 0 1 1 2 2 3 但是,如果我将{“t

我试图使用
json\u normalize
将一些json扁平化为一个数据帧。如果没有空值,它将按预期工作:

import pandas as pd
from pandas.io.json import json_normalize

json = [{"test": 1}, {"test": 2}, {"test": 3}]

df = json_normalize(json)

print(df)
返回:

   test
0     1
1     2
2     3
但是,如果我将
{“test”:3}
更改为
{“test”:None}
,则以下int64数据对象将转换为float64类型:

   test
0   1.0
1   2.0
2   NaN

有人找到了解决这个问题的方法吗?

这是因为整数不能是NaN类型

一种解决方法是将所有内容保持为字符串:

json = [{"test": "1"}, {"test": "2"}, {"test": "None"}]
你会得到

   test
0     1
1     2
2  None

同意,如果要保留“无”,请转换为字符串。否则,您也可以删除NaN,然后将其转换回整数