python - Numpy 将整数转为小数

标签 python pandas numpy

考虑以下代码

import numpy as np
import pandas as pd
myDict = ({"Row 1": [10, np.nan],
           "Row 2": [10, "NaN"]})
myDf = pd.DataFrame(myDict)

这会产生以下数据框

enter image description here

为什么使用 np.nan 会将第一列中的 int 转换为小数?

最佳答案

Pandas 在很多方面都依赖于 Numpy。其中包括空值np.nan。 Numpy 将该值定义为 dtype np.float。 Pandas 打算将数据帧列存储为一维 Numpy 数组。 Numpy 要求所有值都转换为相同的dtype

如果 Numpy 的整数为空值,则此问题将得到修复,但目前还没有。

当 Pandas 读取字典并意识到所有值都是数字时,它有两个选择。

  1. 将整个列转换为 dtype object 并保留值 [10, np.nan]
  2. 将整个列转换为 dtype float 并增加整数 [10.0, np.nan]

Pandas 选择第二个选项,因为几乎总是人们会进行数值计算,并且 float 针对此类事情进行了优化,而 object 则不然。

在另一列上,[10, "Nan"] 里面有一个字符串,Pandas 不会尝试将它们变成 float 并将它们保留为对象。由您来修复它。

关于python - Numpy 将整数转为小数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52841476/

相关文章:

Python numpy 屏蔽数组初始化

python - 关于 Python 中使用的 DOM 解析器的问题

java - Python 相当于 Java 的 getClass().getFields()

python - python 匹配txt文件中的字符串并获取它旁边的数字

python - 在 Pandas DataFrame 上应用自定义类/函数

python - file.readines() 之后的 split() 出错

python - 两行pandas之间的差异

python - 在Python中删除二维数组中的最后一个值

python - 如何将 numpy 数组作为对象存储在 pandas 数据框中?

python - 从列表和字典创建新元组