2014-06-05 5 views
1

왜 HDFStore가 팬더의 문자열 열에 경고를 표시하는지 궁금합니다. 나는 그것이 실제 데이터베이스의 NaN이라고 생각했지만, 하나가 섞이지 않고 단순히 문자열 일지라도 여기에서 그것을 시도하면 두 열에 대한 경고가 나타납니다.팬더 HDFStore 경고

.13.1 팬더와 3.1.1 테이블

를 사용

In [75]: d1 = {1:{'Mix': 'Hello', 'Good': 'Hello'}} 

In [76]: d2 = {2:{'Good':'Goodbye'}} 

In [77]: d2_df = pd.DataFrame.from_dict(d2,orient='index') 

In [78]: d_df = pd.DataFrame.from_dict(d1,orient='index') 

In [80]: d = pd.concat([d_df,d2_df]) 

In [81]: d 
Out[81]: 
     Good Mix 
1 Hello Hello 
2 Goodbye NaN 

[2 rows x 2 columns] 

In [84]: d.to_hdf('test_.h5','d') 
/home/cschwalbach/venv/lib/python2.7/site-packages/pandas-0.13.1-py2.7-linux-x86_64.egg/pandas/io/pytables.py:2446: PerformanceWarning: 
your performance may suffer as PyTables will pickle object types that it cannot 
map directly to c-types [inferred_type->mixed,key->block0_values] [items->['Good', 'Mix']] 

    warnings.warn(ws, PerformanceWarning) 

답변

1

(당신이 fixed로, 기본값을 format를 지정하지 않은 경우) fixed 형식, 당신은 object dtypes를 저장하는를 사용하여 저장 (문자열이 저장된다 pandas의 객체 dtypes). 이러한 배열 유형 (CArray, EArray)에서 PyTables에서 지원하지 않는 가변 길이 형식이며, here

당신은 는 그러나 format='table'에 저장할 수있는 경고를 참조; 고정 길이 문자열 저장에 대해서는 docs을 참조하십시오.

+0

매우 큰 데이터 프레임이 있습니다. 20mm 행 및 40 열. 이 매개 변수를 사용하여 DF를 저장하는 가장 좋은 방법입니까? – user1610719

+1

다음에 청크로 추가하거나 심지어 저장할 수 있으므로''table'' 형식을 사용하고 싶습니다. ''fixed''는 다소 빠르지 만 추가하거나 질의 할 수 없습니다. docs : http://pandas.pydata.org/pandas-docs/stable/io.html#hdf5-pytables (요리 책은 링크입니다) – Jeff

+0

http://stackoverflow.com/questions/14262433/large-data- 작업 흐름을 사용하는 판다 – Jeff

0

여기서 NaN 값이 문제입니다. 빈 문자열로 대치하면 경고가 사라집니다.