我有一个非常大的数据集,因此我通过将dtypes转换为最小可能类型并在某些列上使用Series.to_sparse
来实现压缩数据(实现约80%压缩)。但是,当我尝试连接其中两个数据集(两者都具有相同的压缩和dtypes)时,我失去了这种压缩。即:
dfmerged = pd.concat((df1, df2), 0)
dfmerged.dtypes
现在全部是float64
。我尝试了以下操作:
for c in df1.columns:
if dfmerged[c].dtype != df1[c].dtype:
dfmerged[c] = dfmerged[c].astype(df1[c].dtype)
然而,这给了我一个错误:'现在只能支持浮点数据'。
原始列可以是uint8
,uint16
等。所以我猜不支持float64.astype(uint8)
?
我能做到这一点的最佳方式是什么?我是否需要通过创建具有正确类型信息的单个Series来从头开始创建DataFrame?
熊猫版本:0.15.0-6-g403f38d
Python:2.7