2017-10-30 10 views
0

계산을 수행하기 위해 팬더/dask를 사용하고 있습니다. 디스크의 쪽모락 파일에 데이터를 저장하고 있습니다. 문제는 칼럼 '시간'과 시간이라는 색인이 있다는 것입니다. 나는 둘 다 갖고 싶다.인덱스가 중복 된 열이있는 쪽모 파일을로드 할 때 파이로 문제가 발생합니다.

import pyarrow as pa 
import pyarrow.parquet as pq 
%matplotlib inline 
dfx.to_dict() 

Out[115]: 
{'close': {Timestamp('2017-06-30 01:31:00'): 154.99958999999998, 
    Timestamp('2017-06-30 01:32:00'): 154.99958999999998, 
    Timestamp('2017-06-30 01:33:00'): 154.01109, 
    Timestamp('2017-06-30 01:34:00'): 154.01109, 
    Timestamp('2017-06-30 01:35:00'): 152.60051000000001}, 
'time': {Timestamp('2017-06-30 01:31:00'): Timestamp('2017-06-30 01:31:00'), 
    Timestamp('2017-06-30 01:32:00'): Timestamp('2017-06-30 01:32:00'), 
    Timestamp('2017-06-30 01:33:00'): Timestamp('2017-06-30 01:33:00'), 
    Timestamp('2017-06-30 01:34:00'): Timestamp('2017-06-30 01:34:00'), 
    Timestamp('2017-06-30 01:35:00'): Timestamp('2017-06-30 01:35:00')}} 

# set index column 
dfx.set_index('time', drop=False, inplace=True) 

dfx.head() 
Out[117]: 
            time  close 
time            
2017-06-30 01:31:00 2017-06-30 01:31:00 154.99959 
2017-06-30 01:32:00 2017-06-30 01:32:00 154.99959 
2017-06-30 01:33:00 2017-06-30 01:33:00 154.01109 
2017-06-30 01:34:00 2017-06-30 01:34:00 154.01109 
2017-06-30 01:35:00 2017-06-30 01:35:00 152.60051 

# store to parquet file format 
tdfx = pa.Table.from_pandas(dfx) 
pq.write_table(tdfx, 'data.parquet') 


# recovering 
dfx = pq.read_table('data.parquet').to_pandas() 
--------------------------------------------------------------------------- 
IndexError        Traceback (most recent call last) 
<ipython-input-119-5e9d7cd2ea0d> in <module>() 
     1 # recovering 
----> 2 dfx = pq.read_table('data.parquet').to_pandas() 

pyarrow/table.pxi in pyarrow.lib.Table.to_pandas (/arrow/python/build/temp.linux-x86_64-3.6/lib.cxx:37990)() 

/home/ghildebrand/anaconda3/envs/p36/lib/python3.6/site-packages/pyarrow/pandas_compat.py in table_to_blockmanager(options, table, memory_pool, nthreads) 
    296   i = schema.get_field_index(name) 
    297   if i != -1: 
--> 298    col = table.column(i) 
    299    index_name = (None if is_unnamed_index_level(name) 
    300       else name) 

pyarrow/table.pxi in pyarrow.lib.Table.column (/arrow/python/build/temp.linux-x86_64-3.6/lib.cxx:38622)() 

IndexError: Table column index 2 is out of range 

이이 pyarrow의 버그인가, 또는이 마루 불가능하거나 내가 다른 뭔가를 잘못하고있는 중이 야 해요 ?? : 나는 데이터를 저장 한 후 나중에로드 할 때, 나는 다음과 같은 오류를 얻을 수

업데이트 : 중복 열 "시간"을 제거하고 색인 해결 만 유지합니다. 그래서 내가 생각하는 문제는 마루판 고유 한 열 식별자 집합이 생성 된 것입니다.

+1

나는 충돌하는 컬럼 이름에 문제가 있다고 말하고 싶다. 2 개의 열에 대해 동일한 데이터를 2 배로 사용하는 것은 다소 터무니없는 것처럼 보입니다. 왜 그럴 필요가 있습니까? 실험하기 위해 동일한 작업을 수행하되 비 인덱스 시간 열을 제거하십시오. –

+0

비 인덱스 시간 열을 제거하면 문제가 해결되었습니다. 증서에서 칼럼의 이름을 바꿔 문제를 해결하고 더 깨끗함 – PlagTag

+1

이것은 화살표 마스터 (https://github.com/apache/arrow/pull/1271)에서 수정되었으며 다음 버전 인 버전에서 사용할 수 있습니다 0.8.0. –

답변