Python-连接数据框时遇到问题

时间:2020-08-09 18:12:04

标签: dataframe join

我有2个数据框。

第一个:

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]})

我想将df2的值加入df1中。

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"])

不幸的是,我到处都出现了NA:

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

我注意到,每个加入的组合系统地是1个人。其余的永远不会。 “名字”字段的类型为Series:

print(type(df1["prenom"]))
print(type(df2["prenom"]))

<class 'pandas.core.series.Series'>
<class 'pandas.core.series.Series'>

我不明白...

谢谢

0 个答案:

没有答案