NumPy是否具有像Pandas这样的select_dtypes?

时间:2019-02-27 12:48:15

标签: python pandas numpy

目标:以类似于具有“ select_dtypes”的熊猫的方式使用NumPy。

按如下所示设置数据框:

>>> df = pd.DataFrame({'a': [1, 2] * 3,
...                    'b': [True, False] * 3,
...                    'c': [1.0, 2.0] * 3})
>>> df
        a      b  c
0       1   True  1.0
1       2  False  2.0
2       1   True  1.0
3       2  False  2.0
4       1   True  1.0
5       2  False  2.0

我正在使用NumPy寻找类似的东西

>>> df.select_dtypes(include=['float64'])
   c
0  1.0
1  2.0
2  1.0
3  2.0
4  1.0
5  2.0

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:3)

Numpy数组的元素都具有相同的基础类型。 这些实际上是C language数组(并且所有元素的数据类型都必须相同)。

您可以使用import numpy as np a = np.array([1.5, 2, 3]) print(a.dtype) 属性对其进行检查,如下所示:

np.float64

即使两个元素作为int插入,也会给您float

如果您要检查某个int是否可能是np.isclose(例如上例中的2和3),则不要这样做,因为浮点精度可能会成为问题

如果您真的坚持,则可以使用float获取一个布尔数组,该布尔数组指示每个int元素是否足够接近其底线# For example above, e.g. [1.5, 2, 3] print(np.isclose(np.floor(a), a)) 对应元素,并且这些元素可以可广播不会造成太大的精度损失:

[False, True, True]

将给您bool,表示可以强制转换第二和第三元素。再次,我建议您不要这样做。

编辑:如果您将布尔值numpy数组强制转换为np.float,则无法将其取回,因为您无法区分强制转换为float的{​​{1}}和将int强制转换为float,如果 int具有01值。