2016-11-01 6 views
1

두 개의 스크립트를 작성했습니다.Python/Pandas HDF5 NameError 문제

첫 번째 스크립트는 한 번만 실행하도록 설계하고, 생성 된 스크립트 내에서 다음 코드를 사용 HDF5 파일에 저장됩니다 df_empty, storage.h5라는 큰, 빈 dataframe :

from pandas import HDFStore 
hdf = HDFStore('storage.h5') 
hdf.put('d1', df_empty, format='table', data_columns=True) 

완벽하게 작동합니다.

나의 다음 스크립트는 매 30 분을 실행하고 반 시간마다 생성 된 CSV 파일에서 데이터를 수 있도록 설계되어 :

  1. 새로운 dataframe DF에이 데이터를 넣어;

  2. 오기 DF2 같은 storage.h5에서 dataframe;

  3. 병합 인덱스 조합 명령을 사용 DF DF2 및 DF3로;

  4. storage.h5에 새 데이터 프레임을 다시 저장하여 효과적으로 이전 파일을 덮어 씁니다.

    from pandas import HDFStore 
    store = pd.HDFStore('storage.h5') 
    df2 = pd.DataFrame(store['d1']) 
    df3 = df.reindex(index = df2.index.union(df.index)) 
    hdf.put('d1', df3, format='table', data_columns=True) 
    

    내가 Jupyter 노트북에 순차적으로 두 개의 스크립트를 실행하는 경우이 잘 작동 (나는 아나콘다의 최신 버전을 설치하고이를 실행하고 다음과 같이

코드의 관련 섹션입니다 Windows 7 컴퓨터에서).

그러나 명령 프롬프트에서 실행하면 문제가 발생합니다. 첫 번째 스크립트는 오류없이 실행됩니다. '= hdf.put ('D1 ', DF3, 형식 파일 "myfile.py", 라인 64 :

역 추적 (마지막으로 가장 최근 통화) : 그러나, 두 번째 스크립트는 다음과 같은 오류를 던졌습니다 테이블 ', data_columns = 참) 나가서 설명하자면 NameError : 이름'HDF는 '열린 파일을 남아있는 닫기 정의되지 않은 :로에 storage.h5 ... donestorage.h5 ... 사람이 어떤 제안이 있습니까

을 수행을 내가 잘못했을 수도 있니?

답변

1
내가 충분한 명성을 가지고 있기 때문에 내가 언급 할 수

,

하지만 당신은 hd5에 매장을 오픈하고있는 동안 변수

저장

에 할당하는 것이 가능할 수있다 변수를 사용하여 새 데이터를 넣으십시오.

hdf?

+0

예! 고맙습니다. 잘 보였다. 그 트릭을 한 것으로 보인다. – pottolom