260 votes

pandas: fusionner (joindre) deux cadres de données sur plusieurs colonnes

J'essaie de joindre deux trames de données de pandas en utilisant deux colonnes:

 new_df = pd.merge(A_df, B_df,  how='left', left_on='[A_c1,c2]', right_on = '[B_c1,c2]')
 

mais j'ai eu l'erreur suivante:

 pandas/index.pyx in pandas.index.IndexEngine.get_loc (pandas/index.c:4164)()

pandas/index.pyx in pandas.index.IndexEngine.get_loc (pandas/index.c:4028)()

pandas/src/hashtable_class_helper.pxi in pandas.hashtable.PyObjectHashTable.get_item (pandas/hashtable.c:13166)()

pandas/src/hashtable_class_helper.pxi in pandas.hashtable.PyObjectHashTable.get_item (pandas/hashtable.c:13120)()

KeyError: '[B_1, c2]'
 

Une idée de ce qui devrait être la bonne façon de faire cela? Merci!

458voto

Shijo Points 3830

Essayez ceci

new_df = pd.merge(A_df, B_df,  how='left', left_on=['A_c1','c2'], right_on = ['B_c1','c2'])

http://pandas.pydata.org/pandas-docs/version/0.19.1/generated/pandas.DataFrame.merge.html

left_on : étiquette ou une liste, ou semblable au tableau les noms de Champ pour rejoindre sur la gauche DataFrame. Peut être un vecteur ou d'une liste de vecteurs de la longueur de la DataFrame utilisation d'un vecteur comme la clé de jointure au lieu de les colonnes

right_on : étiquette ou une liste, ou semblable au tableau les noms de Champ pour rejoindre sur en droit DataFrame ou vecteur/liste de vecteurs par left_on docs

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X