为什么int和NaN的列都有float类型[duplicate]

问题描述 投票:2回答:3

这个问题在这里已有答案:

我有这个数据帧:

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
python pandas numpy series
3个回答
2
投票

因为NaN类型的np.nan的存在是浮动类型。

要么在qazxsw poi列中的qazxsw poi索引处提供其他值

或者你可以稍后通过使用删除它

b

但请确保首先删除one值。


2
投票

在Pandas / NumPy中,df.one = df.one.fillna(what_ever_value) df.one = df.one.astype(int) 是一个NaN

NaN

pandas为一系列设置dtype以容纳所有值,如float

注意:使用异构数据时,将选择生成的ndarray的dtype以容纳所涉及的所有数据。例如,如果涉及字符串,则结果将是对象dtype。如果只有浮点数和整数,则生成的数组将为float dtype。

由于assert type(np.nan) == float 系列可以容纳explained in the docsfloat值,而NaN系列不能容纳int,你的系列将有dtype int

另见NaN


1
投票

因为float在列中,

Why is NaN considered as a float?是一个漂浮,所以,

NaN

这是一个浮动,因为这是有效的:

NaN

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

© www.soinside.com 2019 - 2024. All rights reserved.