2017-10-20 8 views
0

Comment puis-je concaténer dans des pandas en utilisant une colonne comme une clé comme nous le faisons en SQL?Comment concaténer des dataframes en utilisant 2 colonnes comme clé?

DF1

col1 col2 
a1 b1 
a2 b2 
a3 b3 
a4 b4 

DF2

col3 col4 
a1  d1 
a2  d3 
a3  d3 

Je veux fusionner/concaténer les col1 = col3 sans se débarrasser des dossiers qui ne sont pas col3 mais sont dans la colonne 1. Tout comme une jointure à gauche dans sql.

df

col1 col2 col4 
a1 b1  d1 
a2 b2  d2 
a3 b3  d3 
a4 b4  NA 
+0

https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.merge.html – HFBrowning

Répondre

0

Est-ce que le travail pour vous:

df1 = pd.DataFrame(
    [ 
     ['a1', 'b1'], 
     ['a2', 'b2'], 
     ['a3', 'b3'], 
     ['a4', 'b4'] 
    ], 
    columns=['col1', 'col2'] 
) 

df2 = pd.DataFrame(
    [ 
     ['a1', 'd1'], 
     ['a2', 'd2'], 
     ['a3', 'd3'] 
    ], 
    columns=['col3', 'col4'] 
) 

df1 = df1.set_index('col1') 
df2 = df2.set_index('col3') 

dd = df2[df2.index.isin(df1.index)] 
# dd.index.names = ['col1'] 

df = pd.concat([df1, dd], axis=1).reset_index().rename(columns={'index': 'col1'}) 

# Output 
    col1 col2 col4 
0 a1 b1  d1 
1 a2 b2  d2 
2 a3 b3  d3 
3 a4 b4  NaN