2016-09-19 5 views
1

그래서 2 개의 데이터 세트가 있습니다. df1에는 모든 과일의 색상이 있고 df2은 없습니다. 과일 이름에 따라 d1의 색상 데이터를 기반으로 df2의 색상 값을 매핑하는 방법은 무엇입니까?다른 데이터 세트의 데이터 매핑. Python Pandas

   df1         df2 
Name    Color    Name    Color 
Apple    Red    Orange   Na 
Orange    Orange   Coconut   Na 
Pear    Pear    Pear    Na 
Pear    Pear    Strawberries  Na 
Papaya    Papaya   Banana   Na 
Watermelon   Watermelon  Papaya   Na 
       "     "     "     " 

답변

1

난 당신이 map를 사용할 수 있다고 생각하지만, 먼저 필요 Series.drop_duplicates :

df2['Color'] = df2['Name'].map(df1.set_index('Name')['Color'].drop_duplicates()) 
print (df2) 
      Name Color 
0  Orange Orange 
1  Coconut  NaN 
2   Pear Pear 
3 Strawberries  NaN 
4  Banana  NaN 
5  Papaya Papaya 

DataFrame.drop_duplicatesDataFrame.dropmerge 또 다른 솔루션 :

df2 = pd.merge(df2.drop('Color', axis=1),df1.drop_duplicates(), how='left') 
print (df2) 
      Name Color 
0  Orange Orange 
1  Coconut  NaN 
2   Pear Pear 
3 Strawberries  NaN 
4  Banana  NaN 
5  Papaya Papaya 
+0

답장을 보내 주셔서 감사합니다. 하지만 그것은 나에게 "고유 인덱스 개체를 고유하게 다시 색인하기"오류가 발생했습니다 –

+0

편집을 참조하십시오. '.drop_duplicates()'를 추가합니다 – jezrael

+0

이것은 잘 확장되지 않습니다 –

1

당신은 merge으로이 작업을 수행 할 수 있습니다

df2 = df2.merge(df1, on="Name", how="left", suffixes=('_1','_2')) 

이름이 인덱스 컬럼 인 경우 당신은 단지 join 할 수 있습니다 : 당신이 내 대답에 정교 종류 충분했다 아래/위의 답변을 볼 수있는보다 완전한 예를 들어

df2 = df2.join(df1[['color']]) 

합니다.

관련 문제