나는 chunk에서 데이터를 읽고 mySQL 테이블로 출력하려고하는 HDF5 파일을 가지고 있습니다. .hdf5에 팬더 이터레이터를 올바르게 사용하는 방법은 무엇입니까?
팬더 V를 사용하여 0.12.0 코드
iter = store.select('data',iterator=True, chunksize=5000)
for data in iter:
# write the data out
처럼 보인다하지만 예외가 얻을 :
for data in iter:
File "d:\python27\lib\site-packages\pandas\io\pytables.py", line 969, in __iter__
v = self.func(current, stop)
File "d:\python27\lib\site-packages\pandas\io\pytables.py", line 451, in func
return s.read(where=where, start=_start, stop=_stop, columns=columns, **kwargs)
File "d:\python27\lib\site-packages\pandas\io\pytables.py", line 3175, in read
mgr = BlockManager([block], [cols_, index_])
File "d:\python27\lib\site-packages\pandas\core\internals.py", line 1001, in __init__
self._verify_integrity()
File "d:\python27\lib\site-packages\pandas\core\internals.py", line 1239, in _verify_integrity
construction_error(tot_items,block.values.shape[1:],self.axes)
File "d:\python27\lib\site-packages\pandas\core\internals.py", line 2216, in construction_error
tuple(map(int, [len(ax) for ax in axes]))))
ValueError: Shape of passed values is (1, 5000), indices imply (1, 3751044)
나는 오류가 말하고자하는 어떤 ValueError를 이해하지를 : 전달 된 값의 모양은 (1, 5000), 인덱스는 (1, 3751044)를 의미합니다. 그리고 나는 그것을 행복하게하는 방법을 모른다.
나는 chunkksize = 5000 값이 팬더에게 5000 개의 행 청크로 데이터를 읽으 리라고 생각했지만 분명히 반복을하는 것을 좋아하지 않는다. select (chunksize = XXXX)의 올바른 사용법은 무엇입니까?
이것은 iterator <0.14에 많은 버그가 있으므로 현재 0.15.1로 업그레이드하는 것이 좋습니다. 그래도 사용법은 정확합니다. docs는 [여기] (http://pandas.pydata.org/pandas-docs/stable/io.html#iterator)입니다. 참고로, 당신은 데이터를 저장하기 위해''table'' 형식을 사용해야합니다. ''고정형 ''형식은 반복을 지원하지 않습니다 (저는 0.13을 사용했습니다.이 명명법을 사용하기 시작했습니다) – Jeff
고마워요. 동일한 오류 0.15.1로 업그레이드되었습니다. 이번에는 비 호환성 경고가 나타났습니다. d : \ python27 \ lib \ site-packages \ pandas \ io \ pytables.py : 2966 : IncompatibilityWarning : 기준이 [0.0.0] 너무 오래되었거나 ( 정의되지 않음), 파일을 읽고 새 파일에 복사 ( copy_to 메서드 사용) 이 copy_to 메서드는 무엇을 의미합니까? –
흠, 정말 오래된 버전입니다. (그 경고는 아마도 날짜가 맞았을 것입니다.) 당신은 당신이 가진 것을 더 많이 보여줄 필요가 있습니다. ''select()''에서 파일을 읽을 수 있습니까? (반복자 없음)? – Jeff