You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何PyArrow可读取额外索引列而Pandas DataFrame却无法读取?

问题:Pandas读取Parquet时为何忽略__null_dask_index__列?

代码示例

import pandas as pd
import dask.dataframe as da
from pyarrow.parquet import ParquetFile


df = pd.DataFrame([1, 2, 3], columns=["value"])

my_dataset = da.from_pandas(df, chunksize=3)
save_dir = './local/'
my_dataset.to_parquet(save_dir)


pa = ParquetFile("./local/part.0.parquet")
print(pa.schema.names)

df2 = pd.read_parquet("./local/part.0.parquet")
print(df2.columns)

输出结果

['value', '__null_dask_index__']
Index(['value'], dtype='object')

问题说明

想了解为何Pandas DataFrame会忽略__null_dask_index__列?或者该列并不被视为普通列?

解答

__null_dask_index__是Dask保存Parquet时自动添加的特殊元数据列,并非普通业务数据列:

  • 当你把无自定义索引的Pandas DataFrame转为Dask DataFrame时,Dask会自动生成这个空索引列,用来维持分块计算的逻辑一致性,保存Parquet时会将其写入文件。
  • Pandas在读取Parquet时,会自动识别并过滤这类由Dask添加的特殊索引元数据,只加载真正的业务数据列。
  • 要是想让Pandas读取到这个列,可以在Dask保存时加上参数write_index=False(禁止写入索引列),或者通过pyarrow的API手动读取所有列后再转为DataFrame。

内容的提问来源于stack exchange,提问作者noobie2023

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 20:05:39