为什么int和NaN的列具有浮点类型

时间:2018-09-07 08:18:01

标签: python pandas numpy series

我有这个数据框:

data = {'one': pd.Series([1,2,3], index=['a','c','d'], dtype='i4')
        'two': pd.Series([4,7,2,2], index=['a','b','c','d'])}

pd.DataFrame(data)

我正在关注输出

    one two
a   1.0 4

b   NaN 7

c   2.0 2

d   3.0 2

3 个答案:

答案 0 :(得分:2)

在Pandas / NumPy中,NaNfloat

assert type(np.nan) == float

Pandas为系列设置dtype以容纳所有值,例如explained in the docs

  

注意:在处理异构数据时,将选择结果ndarray的dtype容纳所有数据   参与。例如,如果涉及字符串,则结果将为   对象dtype。如果只有浮点数和整数,则结果   数组将为float dtype。

由于float系列可以容纳NaNint值,而int系列不能容纳NaN,因此您的系列将具有dtype {{1 }}。

另请参阅Why is NaN considered as a float?

答案 1 :(得分:2)

由于类型为.Connection = cn .CommandText = "update [Sheet1$] set [Name]='" & txtName.Text & "',[Department]='" & cboDepartment.SelectedItem & "',[Problem]='" & txtProblem.Text & "',[Classification]='" & cboClass.SelectedItem & "',[Data/Time]='" & DTP.Value & "',[Solution]='" & txtSolution.Text & "',[Status]='" & txtStatus.Text & "',WHERE [ID]='" & IDEm.Text & "' " .ExecuteNonQuery() MsgBox("Successfully UPDATED", MsgBoxStyle.Information, "Success") 的{​​{1}}是浮点型。

在列NaN的索引np.nan处提供其他值

,或者您以后可以使用

将其删除
b

但请确保先删除one值。

答案 2 :(得分:1)

因为NaN在列中,

NaN是浮点数,

>>> import numpy as np
>>> type(np.nan)
<class 'float'>
>>> 

它是浮点数,因为它有效:

>>> float('NaN')
nan
>>> 

列中的所有内容都应为浮点数