Bonjour,
Je dispose de 2 dataframes.
Le premier :
Je souhaite joindre les valeurs de df2 dans df1.Code:
1
2
3
4 df1 = pd.DataFrame({'nom_combinaison': ['Combinaison1', 'Combinaison1', 'Combinaison1', 'Combinaison2','Combinaison2', 'Combinaison2', 'Combinaison3', 'Combinaison3', 'Combinaison3'], 'prenom': ['Personne2', 'Personne3', 'Personne1', 'Personne2', 'Personne4', 'Personne1', 'Personne2', 'Personne5', 'Personne1']}) df2 = pd.DataFrame({'prenom': ['Personne1', 'Personne2', 'Personne3', 'Personne4', 'Personne5'], 'valeur1' : [2, 1, 1, 4, 5], 'valeur2' : [7, 4, 1, 1, 2], 'valeur3' : [1, 2, 3, 3, 1], 'valeur4' : [7, 8, 9, 4, 5], 'valeur5' : [10, 11, 12, 2, 6]})
Malheureusement, j'ai des NA qui apparaissent un peu partout :Code:
1
2
3
4
5
6
7
8 df1 = pd.DataFrame({'nom_combinaison': ['Combinaison1', 'Combinaison1', 'Combinaison1', 'Combinaison2','Combinaison2', 'Combinaison2', 'Combinaison3', 'Combinaison3', 'Combinaison3'], 'prenom': ['Personne2', 'Personne3', 'Personne1', 'Personne2', 'Personne4', 'Personne1', 'Personne2', 'Personne5', 'Personne1']}) df2 = pd.DataFrame({'prenom': ['Personne1', 'Personne2', 'Personne3', 'Personne4', 'Personne5'], 'valeur1' : [2, 1, 1], 'valeur2' : [7, 4, 1], 'valeur3' : [1, 2, 3], 'valeur4' : [7, 8, 9], 'valeur5' : [10, 11, 12]}) test = pd.merge(df1, df2, how = "outer", on = ["prenom"]) test = test.sort_values(by = ["nom_combinaison", "prenom"])
Je remarque que c'est systématiquement 1 personne par combinaison qui est jointe. Le reste, jamais. Le champ "prenom" est de type Series :Code:
1
2
3
4
5
6
7
8
9
10
11 nom_combinaison prenom valeur1 valeur2 valeur3 45 Combinaison_1 Personne2 NaN NaN NaN 54 Combinaison_1 Personne3 NaN NaN NaN 0 Combinaison_1 Personne1 2.0 1.0 1.0 46 Combinaison_2 Personne2 NaN NaN NaN 71 Combinaison_2 Personne4 NaN NaN NaN 1 Combinaison_2 Personne1 2.0 1.0 1.0 47 Combinaison_3 Personne2 NaN NaN NaN 95 Combinaison_3 Personne5 NaN NaN NaN 2 Combinaison_3 Personne1 2.0 1.0 1.0
Bref, je n'arrive pas à comprendre... Existe t-il une autre manière de joindre ces dataframes ?Code:
1
2
3
4
5
6 print(type(df1["prenom"])) print(type(df2["prenom"])) <class 'pandas.core.series.Series'> <class 'pandas.core.series.Series'>
Merci.