Les Pandas se joindre question: les colonnes de chevauchement, mais pas de suffixe spécifié
J'ai 2 trames de données:
df_a =
mukey DI PI
0 100000 35 14
1 1000005 44 14
2 1000006 44 14
3 1000007 43 13
4 1000008 43 13
df_b =
mukey niccdcd
0 190236 4
1 190237 6
2 190238 7
3 190239 4
4 190240 7
Quand j'essaie de joindre ces 2 dataframes:
join_df = df_a.join(df_b,on='mukey',how='left')
J'obtiens l'erreur:
*** ValueError: columns overlap but no suffix specified: Index([u'mukey'], dtype='object')
Pourquoi est-ce donc? Le dataframes n'ont de commun mukey des valeurs.
- L'erreur est un peu cryptique, le problème ici est que vous n'avez pas les valeurs qui sont communes à effectuer la jointure sur, si vous avez fait cela, il serait très bien:
LS_sgo.merge(MSU_pi,on='mukey',how='left')
- J'ai des valeurs communes dans le 2 'mukey' colonnes, juste pas dans la petite partie de la dataframes montré. Se joignant à eux dans excel fonctionne, mais pas dans les pandas, il semble...Est il possible que je peux fournir plus d'informations pour vous aider à identifier ce problème?
- Vous devez poster vos données brutes, aussi avez-vous essayez de fusionner?
- Fusion fonctionne! Je vous remercie beaucoup. Pourquoi ne pas rejoindre si? Peut-être que vous pouvez ajouter cela comme une réponse, et je l'accepte
- Vous devez poster vos données dans l'ordre pour moi de regarder cette et expliquer pourquoi rejoindre n'ai pas de travail
Vous devez vous connecter pour publier un commentaire.
Votre erreur sur l'extrait de données que vous avez posté est un peu cryptique, en ce que parce qu'il n'y a pas de valeurs communes, l'opération de jointure échoue parce que les valeurs ne se chevauchent pas, il vous oblige à fournir un suffixe pour la gauche et à droite:
merge
fonctionne parce qu'il n'a pas cette restriction:La
.join()
fonction à l'aide de laindex
de la passer en argument dataset, vous devez utiliserset_index
ou de l'utilisation.merge
fonction de la place.Veuillez trouver les deux exemples qui devraient fonctionner dans votre cas:
join_df = LS_sgo.join(MSU_pi.set_index('mukey'), on='mukey', how='left')
ou
join_df = df_a.merge(df_b, on='mukey', how='left')
pandas
. Il rejoint par laon
de la colonne en plus pour laIndex
, pas à la place.Cette erreur indique que les deux tableaux ont 1 ou plusieurs noms de colonnes qui ont le même nom de colonne. Le message d'erreur se traduit par: "je peux voir la même colonne dans les deux tables, mais vous n'avez pas m'a dit de le renommer avant de porter l'un d'eux dans"
Vous voulez supprimer une des colonnes avant de l'amener de l'autre sur l'utilisation de del df [colonne'nom'], ou l'utilisation lsuffix de ré-écrire la colonne d'origine, ou rsuffix de renommer celui qui est apporté.