pd.read_json() 函数中似乎没有特定的参数来处理这种情况,因为字典 d2 的值是 ''。但是,在这种特殊情况下,这可以通过 replace 后跟一个将列转换为浮点数的循环来处理。
import pandas as pd
import json
import numpy as np
d1 = {"a":"1","b":"2"}
d2 = {"a":"","b":""}
l = [d1,d2]
l_js = json.dumps(l)
d = pd.read_json(l_js).replace('',np.nan)
for i in d:
d[i] = d[i].astype(float)
print(d.dtypes)
输出:
a float64
b float64
dtype: object
当然,如果您不确定是否所有列都应该是浮动的,或者某些列是否可以作为对象,那么您可以简单地在for 之后添加一个try/except:
import pandas as pd
import json
import numpy as np
d1 = {"a":"1","b":"2","c":"aaa"}
d2 = {"a":"","b":"","c":"ccc"}
l = [d1,d2]
l_js = json.dumps(l)
d = pd.read_json(l_js).replace('',np.nan)
for i in d:
try:
d[i] = d[i].astype(float)
except ValueError:
pass
print(d.dtypes)
输出:
a float64
b float64
c object
dtype: object