2017-10-15 1 views
2

Je rencontre des problèmes avec la fusion de deux grandes Dataframes car la fusion renvoie des valeurs NaN bien qu'il existe des valeurs d'ajustement. Les deux DSF ont la forme:Pandas Merge renvoie NaN

DF1

Motor 
2232 
1524 
2230 
2230 
2224 
1516 
1724 
2224 
1524 
1624 
1724 
2224 
2224 
1524 
1524 
1516 
1524 
2224 
1624 
1724 
1724 
2224 
2224 

DF2

Motor Output Torque (mNm) 
0615 0,17 
1219 0,72 
1516 0,59 
1624 2 
2230 4,7 
2233 5,9 
0816 0,7 
1016 0,92 
1024 1,6 
1224 1,7 
1319 1,4 
1331 3,8 
1516 0,97 
1524 2,9 
1717 2,2 
1724 4,5 
2224 6,8 
2232 10 
1336 3,6 
1727 4,9 
1741 8,8 
2237 12 
2642 26 

J'utilise le code:

MergeDat=MergeDat.merge(Motor,how="left") 
print(MergeDat) 

où MergeDat = DF1 et Mot ou = DF2

Comme résultat il retourne:

Motor Output Torque (mNm) 
0  2232     NaN 
1  1524     NaN 
2  2230     NaN 
3  2230     NaN 
4  2224     NaN 
5  1516     NaN 
6  1724     NaN 
7  2224     NaN 
8  1524     NaN 
9  1624     NaN 
10  1724     NaN 
11  2224     NaN 
12  2224     NaN 
13  1524     NaN 
14  1524     NaN 
15  1516     NaN 
16  1524     NaN 
17  2224     NaN 
18  1624     NaN 
19  1724     NaN 
20  1724     NaN 
21  2224     NaN 
22  2224     NaN 
23  1524     NaN 
24  1724     NaN 
25  1841     NaN 
26  2224     NaN 

Je ne sais pas pourquoi la colonne de couple de sortie ne sont pas fusionnées ...

apprécierais toute aide!

+1

Pourriez-vous ajouter 'df.dtypes' à la question? Suspect si plus tard est la colonne de chaîne et l'ancien est de type numérique. – Zero

+0

J'ai eu différents types pour la colonne "Moteur". Correction de ce problème en appliquant la réponse de [jezrael] (https://stackoverflow.com/users/2901002/jezrael) – 2Obe

Répondre

4

Vous devez même dtype de colonnes jointes:

#convert first or second to str or int 
MergeDat['Motor'] = MergeDat['Motor'].astype(str) 
#Motor['Motor'] = Motor['Motor'].astype(str) 

#MergeDat['Motor'] = MergeDat['Motor'].astype(int) 
Motor['Motor'] = Motor['Motor'].astype(int) 

#convert first or second to str or int 
#MergeDat['Motor'] = MergeDat['Motor'].astype(str) 
Motor['Motor'] = Motor['Motor'].astype(str) 

MergeDat['Motor'] = MergeDat['Motor'].astype(int) 
#Motor['Motor'] = Motor['Motor'].astype(int) 


MergeDat=MergeDat.merge(Motor,how="left") 
+0

Merci, c'est tout! – 2Obe

+0

vous êtes les bienvenus! – jezrael