2017-10-15 31 views
2

フィッティング値があるにもかかわらず、マージがNaN値を返すので、2つの大きなデータフレームのマージに問題があります。Pandas Merge returns NaN

Iコード使用

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 とMOT 2つのDFSは、のような形をしていますまたは= 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

私は "モーター"列のために異なったタイプを持っていました。 [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

関連する問題