簡體   English   中英

為什么 Pyarrow 可以讀取額外的索引列而 Pandas dataframe 不能?

[英]Why can Pyarrow read additional index column while Pandas dataframe cannot?

我有以下代碼:

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)

output 是:

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

只是好奇,為什么 Pandas dataframe忽略__null_dask_index__列名? 或者__null_dask_index__不被視為一列?

pandas將讀取__null_dask_index__並將其(正確地)用作索引,因此它不會顯示在列列表中。 要清楚地看到這一點,請指定一個自定義索引(例如 4、5、6),然后檢查df2 dataframe 的頭部:

from pandas import DataFrame
from dask.dataframe import from_pandas
from pyarrow.parquet import ParquetFile


df = DataFrame([1, 2, 3], columns=["value"], index=[4,5,6])

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


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

from pandas import read_parquet
df2 = read_parquet("./local/part.0.parquet")
print(df2.head())
#                      value
# __null_dask_index__       
# 4                        1
# 5                        2

dask 和 pandas(通過 arrow 或 fastparquet)創建的鑲木地板文件包含一個特殊的元數據區域,指定列和索引屬性供 pandas/dask 使用,但 arrow 本身並不知道。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM