在大熊猫系列中将NaN投射到int中

时间:2014-10-28 19:48:14

标签: python numpy pandas

我在一系列的列中缺少值,因此命令dataframe.colname.astype("int64")会产生错误。

有任何解决方法吗?

1 个答案:

答案 0 :(得分:0)

dtype的数据类型或pd.Series对实际使用方式的影响非常小。

您可以使用整数pd.Series,并将dtype设置为object。您仍然可以使用pd.Series执行相同的操作。

但是,如果您手动设置dtypes pd.Series,则pandas将开始在pd.Series内投放条目。根据我的经验,这只会导致混乱。

不要尝试在关系数据库中使用dtypes作为字段类型。它们不是一回事。

如果您想在NaN中混合使用整数和None s / pd.Series,只需将dtype设置为object

dtype设置为float可让您floatint的{​​{1}}表示混合。但请记住,NaN很容易unexact in their representation

我应该提到float的一个常见问题是dtypes操作,当使用的密钥不同pd.merge时,它会默默拒绝加入,例如dtypes即使int仅包含object s。

,也会object

其他解决方法

  1. 您可以使用Series.fillna method来填充int值,但不太可能。 NaN0
  2. -1复制到新列NaN然后使用Series.fillna method。这样您就不会丢失任何信息。
  3. 调用df['was_nan'] = pd.isnull(df['floatcol'])方法时,请为其指定关键字参数Series.astype(),如果失败则只使用当前的raise_on_error=False。因为dtype并不重要。
  4. TLDR;

    不要专注于拥有正确的dtype',dtypes很奇怪。专注于您希望列实际执行的操作。 dtypes没问题。