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

标签 python pandas dictionary

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

相关文章:

python - 值错误: time data 'Date' does not match format '%m/%d/%Y' (Python)

python - 如何在Django中给url添加参数?

python - 如何将索引添加到字典中

python - 用零或字符串替换字典值中的所有整数

python - python 2.7 中的 httplib 二进制数据和 UnicodeDecodeError

python - 在 Python 中读取 Excel 文件透视

python - 为什么 pandas df.loc + lambda 不起作用?

sql - 使用对列表有效地选择 SQL Server 中的行?

python - Pandas - 如何交换列内容,保持标签序列完整?

python - 将字典保存到 .XLSX