본문 바로가기
파이썬

파이썬 조인을 사용하는 Pandas의 vlookup

by º기록 2020. 12. 9.
반응형

다음 2 개의 데이터 프레임이 있습니다.

Example1
sku loc flag  
122  61 True 
123  61 True
113  62 True 
122  62 True 
123  62 False
122  63 False
301  63 True 

Example2 
sku dept 
113 a
122 b
123 b
301 c 

아래 데이터 프레임을 생성하기 위해 Pandas (또는 가장 적합한 Python 연산자)를 사용하여 병합 또는 조인 작업을 수행하고 싶습니다.

Example3
sku loc flag   dept  
122  61 True   b
123  61 True   b
113  62 True   a
122  62 True   b
123  62 False  b
122  63 False  b
301  63 True   c

Both 
df_Example1.join(df_Example2,lsuffix='_ProdHier')
df_Example1.join(df_Example2,how='outer',lsuffix='_ProdHier')

작동하지 않습니다. 내가 뭘 잘못하고 있죠?

 

해결 방법

 

left 병합을 수행하면 sku 열을 조인 할 열로 사용합니다.

In [26]:

df.merge(df1, on='sku', how='left')
Out[26]:
   sku  loc   flag dept
0  122   61   True    b
1  122   62   True    b
2  122   63  False    b
3  123   61   True    b
4  123   62  False    b
5  113   62   True    a
6  301   63   True    c

sku 가 실제로 색인이면 다음을 수행하십시오.

In [28]:

df.merge(df1, left_index=True, right_index=True, how='left')
Out[28]:
     loc   flag dept
sku                 
113   62   True    a
122   61   True    b
122   62   True    b
122   63  False    b
123   61   True    b
123   62  False    b
301   63   True    c

또 다른 방법은 map 을 사용하는 것입니다. 두 번째 df의 색인으로 sku 를 설정하면 실제로 Series가되며 코드는 다음과 같이 단순화됩니다.

In [19]:

df['dept']=df.sku.map(df1.dept)
df
Out[19]:
   sku  loc   flag dept
0  122   61   True    b
1  123   61   True    b
2  113   62   True    a
3  122   62   True    b
4  123   62  False    b
5  122   63  False    b
6  301   63   True    c

 

참조 페이지 https://stackoverflow.com/questions/25493625

 

 

반응형

댓글