定义df.to_sparse()结果的dtype

时间:2016-04-26 12:23:58

标签: python pandas

我有一个稀疏的数据帧df,为了提高内存效率,我希望使用to_sparse()转换它

然而,即使我的dtype=float64df,新的表示似乎也会以dtype=int8结束。

使用dtype=float64时,有没有办法指定数据类型/阻止自动转换为to_sparse()

2 个答案:

答案 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,SparseDataFramedtype没有太多支持,但目前正在开发中。请参阅我打开Github的问题。