我正在将字典列表加载到 pandas 数据框中,即如果 d 是我的字典列表,只需:
pd.DataFrame(d)
不幸的是,字典中有一个值是 64 位整数。它正在转换为 float ,因为一些字典没有此列的值,因此被赋予 NaN
值,从而将整个列转换为 float 。
例如:
col1
0 NaN
1 NaN
2 NaN
3 0.000000e+00
4 1.506758e+18
5 1.508758e+18
如果我尝试 fillna
所有 NaN
为零然后重铸列 astype(np.int64)
返回的值都是稍微偏离(由于四舍五入)。如何避免这种情况并保持原始 64 位值不变?
最佳答案
演示:
In [10]: d
Out[10]: {'a': [1506758000000000000, nan, 1508758000000000000]}
朴素的方法:
In [11]: pd.DataFrame(d)
Out[11]:
a
0 1.506758e+18
1 NaN
2 1.508758e+18
解决方法(注意 dtype=str
):
In [12]: pd.DataFrame(d, dtype=str).fillna(0).astype(np.int64)
Out[12]:
a
0 1506758000000000000
1 0
2 1508758000000000000
关于python - 加载字典时 Pandas 舍入 int64 数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46775709/