我在一系列的列中缺少值,因此命令dataframe.colname.astype("int64")
会产生错误。
有任何解决方法吗?
答案 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
可让您float
和int
的{{1}}表示混合。但请记住,NaN
很容易unexact in their representation
我应该提到float
的一个常见问题是dtypes
操作,当使用的密钥不同pd.merge
时,它会默默拒绝加入,例如dtypes
即使int
仅包含object
s。
object
其他解决方法
Series.fillna
method来填充int
值,但不太可能。 NaN
或0
。-1
复制到新列NaN
,然后使用Series.fillna
method。这样您就不会丢失任何信息。df['was_nan'] = pd.isnull(df['floatcol'])
方法时,请为其指定关键字参数Series.astype()
,如果失败则只使用当前的raise_on_error=False
。因为dtype
并不重要。TLDR;
不要专注于拥有正确的dtype',dtypes很奇怪。专注于您希望列实际执行的操作。 dtypes
没问题。