为什么索引名称总是出现在用熊猫创建的镶木地板文件中?

时间:2018-08-16 08:16:30

标签: python-3.x pandas dataframe parquet fastparquet

我正在尝试使用pandas数据框创建镶木地板,即使我删除了文件的索引,在我重新读取镶木地板文件时它仍会出现。谁能帮我这个?我希望将index.name设置为

>>> df = pd.DataFrame({'key': 1}, index=[0])
>>> df
  key
0    1
>>> df.to_parquet('test.parquet')
>>> df = pd.read_parquet('test.parquet')
>>> df
     key
index     
0        1
>>> del df.index.name
>>> df
     key
0    1
>>> df.to_parquet('test.parquet')
>>> df = pd.read_parquet('test.parquet')
>>> df
     key
index     
0        1

3 个答案:

答案 0 :(得分:1)

使用pyarrow可以正常工作:

>>> df = pd.DataFrame({'key': 1}, index=[0])
>>> df.to_parquet('test.parquet', engine='fastparquet')
>>> df = pd.read_parquet('test.parquet')
>>> del df.index.name
>>> df
   key
0    1
>>> df.to_parquet('test.parquet', engine='fastparquet')
>>> df = pd.read_parquet('test.parquet')
>>> df
       key
index     
0        1 ---> INDEX NAME APPEARS EVEN AFTER DELETING USING fastparquet
>>> del df.index.name
>>> df.to_parquet('test.parquet', engine='pyarrow')
>>> df = pd.read_parquet('test.parquet')
>>> df
   key
0    1 --> INDEX NAME IS NONE WHEN CONVERSION IS DONE WITH pyarrow

答案 1 :(得分:0)

我一直在使用pyarrowfastparquet两个库,试图在不保留索引的情况下编写镶木地板文件,因为我需要将这些数据作为外部表从redshift读取。

对我来说,它对图书馆 fastparquet

起作用
df.to_parquet(destination_file, engine='fastparquet', compression='gzip', write_index=False)

如果您尝试遵循to_parquet official documentation,则会看到它提到参数“ index ”,但是如果所用引擎中不存在此参数,则会抛出错误。目前,我发现只有fastparquet才有这样的选项,并且名为“ write_index

答案 2 :(得分:0)

嘿,这可以和 pyarrow 一起使用,

df = pd.DataFrame({'key': 1}, index=[0])
df.to_parquet('test.parquet', engine='pyarrow', index=False)
df = pd.read_parquet('test.parquet', engine='pyarrow')
df.head()

正如to_parquet documentation中提到的@ alexopoulos7指出,您可以使用“ index ”参数作为参数。它似乎可行,也许是因为我明确指出了engine='pyarrow'