【发布时间】:2020-04-25 22:44:37
【问题描述】:
现在,我知道新版本的 pandas 有一个特殊的数据类型扩展“Int64”,它允许缺失值与同一列中的整数共存,this 主题解释了这一点。但是,我想要一个整数列,它也允许无穷大值。但是,当我尝试将 float('inf') 添加到具有“Int64”类型的列中时,出现错误:“无法安全地将非等效 float64 转换为 int64”。
我想要在我的列中使用无穷大值的原因是我有一列整数距离,虽然其中一些距离是未知的,但已知这些距离超过了 3000 米。当我计算这一列的中位数时,它会有所不同。例如,数组 [1, 5, 10, 20, 50, nan, nan, nan] 的中位数为 10,因为 NaN 值被忽略。但是数组 [1, 5, 10, 20, 50, inf, inf, nan] 的中位数是 20,因为 inf 值被认为大于 50。
有没有办法使整数与“inf”值兼容?还是我必须凑合看?
【问题讨论】:
-
你能用int64中的最大值代替inf吗,如果你的目的是得到一个数组的中位数,结果不会有太大变化吗?
-
浮点数也是真正的整数。只是选择了特定的值来表示无穷大和 nan。您可以分配两个位模式来做同样的事情。您必须实施自己的处理来识别和屏蔽这些值。
-
熊猫可以是对象 dtype,并且包含 int、np.nan、np.inf、None 和/或字符串
-
@hpaulj 尝试了您的建议。确实 int、nan 和 inf 都可以包含在“object”类型的列中,但看起来这种解决方案非常不稳定,只适合只读列。不仅这样的列将接受实际的实数而没有任何问题,这是不应该的 - 一个不太明显的问题是,即使我们非常小心地不让这种情况发生,这样的列仍然会恢复为“float64”键入它得到的任何机会。例如,“fillna()”方法将类型重新定义为它认为合适的类型,忽略填充系列和正在填充的列的类型。
标签: python pandas numpy type-conversion int