我有一个稀疏的数据帧df
,为了提高内存效率,我希望使用to_sparse()
转换它
然而,即使我的dtype=float64
为df
,新的表示似乎也会以dtype=int8
结束。
使用dtype=float64
时,有没有办法指定数据类型/阻止自动转换为to_sparse()
?
答案 0 :(得分:1)
你看,dtypes不是熊猫控制的实体。 Dtypes通常是一个笨拙的东西。 Dtypes无法以任何方式控制,它们通过numpy 自动断言,并且只能在更改dataframe或numpy数组中的数据时更改。
话虽这么说,最后使用float而不是int作为dtype的典型原因是因为NaN值被引入到系列或numpy数组中。有人说这是一只大熊猫。我个人认为这是由于大熊猫和numpy之间的紧密耦合。
一般来说,dtypes永远不应该被任何东西所信任,它们非常不可靠。我认为每个与numpy / pandas一起工作的人如果从未接触过dtypes,就会过上更好的生活。
如果你真的讨厌花车,就我所知,唯一的另一个选择就是使用字符串表示,这在大多数情况下会导致更多问题。
答案 1 :(得分:1)
在Pandas
{@ 1}} pandas.sparse.frame
稀疏框架实现中,我们看到astype()
方法仍在等待从版本0.18.0开始实施。 Ref. Github
当我们实施一些实施时,dtype
的转换应该像pandas.core.frame
(Pandas DataFrame
)一样工作。鉴于大熊猫DataFrame
df
我们可以将其转换为SparseDataFrame
并指定dtype
df.to_sparse().astype(dtype)
ATM,SparseDataFrame
对dtype
没有太多支持,但目前正在开发中。请参阅我打开Github的问题。