【问题标题】:Dask: Disagreeing Indices After Writing/Reading from ParquetDask:从 Parquet 写入/读取后的不一致指数
【发布时间】:2019-09-21 08:49:40
【问题描述】:

我有一个 pandas DataFrame,df,我将它变成了一个 Dask DataFrame,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 的索引返回 转换为 pandas 数据框后,我检查它并查看:

dask_df.compute().index # RangeIndex(start=0, stop=3, step=1)

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

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,从 parquet 中读取它,然后获取具有相同索引的原始 dask 数据帧。关于我在这里做错了什么有什么想法吗?

谢谢!

【问题讨论】:

    标签: python pandas dataframe dask


    【解决方案1】:

    看起来您提供的内容与返回的内容之间存在两个差异:

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

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

    【讨论】:

      猜你喜欢
      • 2020-05-26
      • 2021-06-04
      • 2018-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-18
      • 2018-05-13
      • 2011-12-19
      相关资源
      最近更新 更多