2016-06-29 3 views
2

팬 데스 DataFrame에 두 개의 열이 있습니다 ('col1'및 col2 '). 둘 다 True/False 값을 포함합니다.다른 두 개의 열과 관련된 조건을 기반으로 열 만들기

이 두 열 (col3)에서 세 번째 열을 생성해야합니다. 두 열 중 하나가 다른 열에 True 값을 갖는 경우 레코드에 True 값을 갖습니다.

col3 = [] 

for index, row in df.iterrows(): 
    if df.ix[index, 'col1'] == True or df.ix[index, 'col2'] == True: 
     col3.append(True) 
    else: 
     col3.append(False) 

df['col3'] = col3 

그것은 내 데이터 세트의 크기에 충분히 빠르게 작동하지만 한 줄/벡터화 방법으로 그것을 할 수있는 방법이있다 :

현재, 나는 이것을하고있어? 아마도 두 개의 중첩 된 np.where() 문을 사용했을까요?

답변

2

당신이 할 np.logical_or를 사용할 수 있습니다

In [236]: 
df = pd.DataFrame({'col1':[True,False,False], 'col2':[False,True,False]}) 
df 

Out[236]: 
    col1 col2 
0 True False 
1 False True 
2 False False 

In [239]: 
df['col3'] = np.logical_or(df['col1'], df['col2']) 
df 

Out[239]: 
    col1 col2 col3 
0 True False True 
1 False True True 
2 False False False 

또는 사용 | 운영자 :

In [240]: 
df['col3'] = df['col1'] | df['col2'] 

df 
Out[240]: 
    col1 col2 col3 
0 True False True 
1 False True True 
2 False False False 
관련 문제