J'essaie de joindre deux cadres de données 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 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]'
Avez-vous une idée de la bonne façon de procéder? Merci!
python
python-3.x
pandas
join
Edamame
la source
la source
left_on
etright_on
devrait être une liste de chaînes, pas une chaîne qui ressemble à une liste.Réponses:
Essaye ça
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.merge.html
la source
left_on
etright_on
sont les mêmesa
etb
, pouvons-nous utiliseron = ['a', 'b']
?le problème ici est qu'en utilisant les apostrophes, vous définissez la valeur transmise comme une chaîne, alors qu'en fait, comme @Shijo l'a indiqué dans la documentation, la fonction attend une étiquette ou une liste, mais pas une chaîne! Si la liste contient chacun des noms des êtres de colonnes passés pour la trame de données gauche et droite, alors chaque nom de colonne doit être individuellement entre apostrophes. Avec ce qui a été dit, nous pouvons comprendre pourquoi cela est incorrect:
Et voici la manière correcte d'utiliser la fonction:
la source
Une autre façon de procéder:
new_df = A_df.merge(B_df, left_on=['A_c1','c2'], right_on = ['B_c1','c2'], how='left')
la source