2017-10-15 123 views
2

我有合併兩個大型數據框的問題,因爲合併返回NaN值,雖然有適合的值。兩個DFS是形狀象:熊貓合併返回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 

我使用的代碼:

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

其中MergeDat = DF1 和蒙特或= DF2

由於結果返回:

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 

我不知道爲什麼輸出扭矩列不合並...

感謝任何幫助!

+1

您可以加入'df.dtypes'的問題?如果後面是字符串列,前者是數字類型,則懷疑。 – Zero

+0

我對「電機」列有不同的dtypes。通過應用[jezrael]的答案解決了這個問題(https://stackoverflow.com/users/2901002/jezrael) – 2Obe

回答

4

你需要加入列相同dtype

#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

謝謝,這就是它! – 2Obe

+0

歡迎您! – jezrael