2016-08-18 5 views
1

두 개의 열, 그룹 식별자 및 ID가 포함 된 2 개의 대형 판다 데이터 프레임 (수백만 행 포함)이 있습니다. ID가 첫 번째 데이터 프레임에 있으면 1, 두 번째 데이터 프레임에 ID가 있으면 1로, 그렇지 않으면 0으로 된 그룹을 포함하는 결합 된 데이터 프레임을 만들려고합니다. a팬더 : 데이터 프레임을 병합하고 조건부 열을 새로 만듭니다.

다른 말로하면, 두 개의 데이터 프레임을 병합하고 각 원본 데이터 프레임에 ID가 존재할 경우 조건부 열을 작성하려고합니다. 이 문제에 접근하는 방법에 대한 제안? 여기

작은 예이다

import pandas as pd 

>>> df_a = pd.DataFrame({'group': list('AAABBB'), 'id': [11,12,13,21,22,23]}) 
>>> df_b = pd.DataFrame({'group': list('AAABB'), 'id': [11,13,14,22,24]}) 
>>> df_a 

group id 
A  11 
A  12 
A  13 
B  21 
B  22 
B  23 

>>> df_b 

group id 
A  11 
A  13 
A  14 
B  22 
B  24 

출력은 다음과 같이 표시한다 :

>>> df_full  
group id a b 
A  11 1 1 
A  12 1 0 
A  13 1 1 
A  14 0 1 
B  21 1 0 
B  22 1 1 
B  23 1 0 
B  24 0 1 

답변

3

당신은 병합되기 전에 하나의 데이터 프레임의 각각에 대해 두 개의 열이 만들어와 노나 채울 수 병합 후 제로 :

df_a['a'] = 1 
df_b['b'] = 1 

pd.merge(df_a, df_b, how = 'outer', on = ['group', 'id']).fillna(0) 

# group id  a b 
# 0 A 11.0 1.0 1.0 
# 1 A 12.0 1.0 0.0 
# 2 A 13.0 1.0 1.0 
# 3 B 21.0 1.0 0.0 
# 4 B 22.0 1.0 1.0 
# 5 B 23.0 1.0 0.0 
# 6 A 14.0 0.0 1.0 
# 7 B 24.0 0.0 1.0 
+0

감사합니다. @Psidom. – cyril

관련 문제