达斯克(Dask):从实木复合地板上读写后,不同意指数

时间:2019-09-16 23:31:43

标签: python pandas dataframe dask

我有一个熊猫数据框架df,我把它变成了Dask数据框架dask_df

import pandas as pd
import dask.dataframe as dd
df = pd.DataFrame.from_dict({'col1':[1,2,3], 'col2':[2,3,4]})
dask_df = dd.from_pandas(df, npartitions=1)

dask_df的索引转回大熊猫数据框后检查dask_df.compute().index # RangeIndex(start=0, stop=3, step=1)的索引,请参阅:

dask_df.to_parquet('dask_df.pq', write_index=True) test_df = dd.read_parquet('dask_df.pq') test_df.compute().index #Int64Index([0, 1, 2], dtype='int64', name='index')

但是,如果我将dask数据帧写入镶木地板,然后从parquet读回dask数据帧,则索引不再一致:

 override func viewDidLoad() {
        super.viewDidLoad()

 regionsPicker.snp.makeConstraints { (make) in
            make.centerX.equalToSuperview()
            make.height.equalToSuperview() // since we rotate (this is the width)
            make.top.equalTo(regionsLabel.snp.bottom).offset(15)
            make.width.equalTo(100)
        }
 rotationAngle = -90 * (.pi/180)
        regionsPicker.transform = CGAffineTransform(rotationAngle: rotationAngle)
}

我希望能够将我的dask数据帧(仅一个分区)写入镶木地板,从镶木地板中读取它,并获得具有相同索引的原始dask数据帧。对我在这里做错的事情有什么想法吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

您提供的内容和获得的内容之间似乎有两个区别:

  1. 名称已从None更改为"index"
  2. 类型已从值[0,1,2]的RangeIndex更改为值[0,1,2]的Int64Index

在两种情况下,这都是因为Parquet不提供这些选项。所有列都必须使用Parquet文件格式以文本名称命名,并且它们没有键入列的概念。