Skip to main content
 首页 » 编程设计

python之加载字典时 Pandas 舍入 int64 数字

2025年05月04日14birdshome

我正在将字典列表加载到 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