2013-12-10 4 views
4

pandas HDFStore.select에서 and 유형의 쿼리를 사용하는 방법을 알고 있지만 어떻게 OR을 사용할 수 있습니까?hdfstore select pandas에서 OR 사용

예를 들어, 내가 그럼 난 부분이 데이터 집합 분명히

store = pd.HDFStore('testHDF.h5') 
store.select('testVar1', [pd.Term('index', '>=', pd.Timestamp('20131017')), 'A > 0']) 

또는

store.select('tableVar2', where=('A > 0', 'B > 0', 'index >= 20131017')) 

에서로드를 사용할 수 있습니다 다음 코드를

import pandas as pd 
df1 = pd.DataFrame({'A': randn(100), 
       'B': randn(100), 
       'C': randn(100).cumsum()}, 
       index=pd.bdate_range(end=pd.Timestamp('20131031 23:59:00'), periods=100)) 
df1.to_hdf('testHDF.h5', 'testVar1', format='table', data_columns=True, append=True) 

을 가지고, 그것은이다 AND를 사용하여 내가 제공 한 모든 기준 (예 : 'A> 0'AND 'B> 0'AND 'index> = 20131017 ')

내 질문은, 어떻게 OR을 사용할 수 있습니까? 반환 된 결과가 ('A> 0 'OR'B> 0 ')입니까? 어떤 도움

답변

2

0.12에 대한

감사합니다, 당신은 0.13rc1가 (여러 조건을 선택 0.13/마스터에서

In [9]: pd.concat([store.select('testVar1', where=('A > 0', 'index >= 20131017')), 
        store.select('testVar1', where=('B > 0', 'index >= 20131017'))]).drop_duplicates().sort_index() 
Out[9]: 
        A   B   C 
2013-10-17 0.156248 0.085911 10.238636 
2013-10-22 -0.125369 0.335910 10.865678 
2013-10-23 -2.531444 0.690332 12.335883 
2013-10-24 -0.266777 0.501257 13.529781 
2013-10-25 0.815413 -0.629418 14.690554 
2013-10-28 0.383213 -0.587026 13.589094 
2013-10-31 1.897674 0.361764 14.595062 

[7 rows x 3 columns] 

(당신은 중복을 생성 할 수 염두에두고)의 결과를 CONCAT해야 밖으로!), 당신은 매우 자연 쿼리를

In [10]: store.select('testVar1', where='(A > 0 | B > 0) & index >= 20131017') 
Out[10]: 
        A   B   C 
2013-10-17 0.156248 0.085911 10.238636 
2013-10-22 -0.125369 0.335910 10.865678 
2013-10-23 -2.531444 0.690332 12.335883 
2013-10-24 -0.266777 0.501257 13.529781 
2013-10-25 0.815413 -0.629418 14.690554 
2013-10-28 0.383213 -0.587026 13.589094 
2013-10-31 1.897674 0.361764 14.595062 

[7 rows x 3 columns] 
+0

감사 할 단지 수 나는 부분 집합을 다음 내 팬더 ​​패키지를 업데이트하거나 먼저 DataFrame을로드 할 필요가처럼 보인다 – smartkevin

+0

무엇 너 팬더 버전이야? – Jeff

+0

최신 버전이 아니며, 0.12.0을 가지고 있습니다. 아나콘다 배포판이 있습니다. – smartkevin