2017-10-28 2 views
2

저는 파이썬을 처음 접했고 어떻게해야 할 지 명확하지 않은이 특별한 작업을하고 싶었습니다. 나는 그것을 찾기 위해 무엇을 검색해야할지조차 모른다. 여기에 첫 번째는 코드이며 나는 그것을 아래 목표로하고있는 무슨을 설명 할 것이다 :팬더 데이터 프레임에서 하위 집합을 동적으로 선택하는 방법은 무엇입니까?

import pandas as pd 

mycolumns = ['col1', 'col2', 'col3'] 

df = pd.DataFrame(data=[[**1**,2,3,**1**,5,6],[1,2,3,4,5,6]], 
        columns=['col1_l', 'col2_l', 'col3_l', 'col1_r', 'col2_r', 'col3_r']) 

criteria = list() 
for col in mycolumns : 
    criterion = (df[col + '_l'] == df[col + '_r']) 
    criteria.append(criterion) 

df = df[criteria[0] | criteria[1] | ... | criteria[5]] 

print df 

출력 :

col1_l col2_l col3_l col1_r col2_r col3_r 
0  1,  2,  3,  1,  5,  6 

내가 원하는 것이 충족 dataframe의 행을 선택 할 수있다 모든 지정된 기준,하지만 문제는 열의 수가 고정되어 있지 않다는 것입니다. 각 실행마다 다른 수의 열이있을 수 있으며이를 실행할 때마다 동일한 작업을 수행하려고합니다. 질문은 내가이 줄을 쓸 수있는 방법입니다 :

df = df[criteria[0] | criteria[1] | ... | criteria[5]] 

가 dataframe 데이터베이스를 통해 참여 SQL 쿼리에서 얻은 것을 명심를, 난 그냥 설명이 예제 dataframe을 썼다. 이것이 분명하다면 고맙습니다.

답변

3

사용 np.logical_or.reduce :

print (df[np.logical_or.reduce(criteria)]) 
    col1_l col2_l col3_l col1_r col2_r col3_r 
0  1  2  3  1  5  6 
관련 문제