[英]Pandas Merge returns NaN
我在合並兩個大型數據幀時遇到問題,因為盡管存在擬合值,但合並返回 NaN 值。 這兩個 dfs 的形狀如下:
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 和 Motor= 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
我不知道為什么輸出扭矩列沒有合並......
感謝任何幫助!
您需要連接列的相同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")
就我而言,這是因為我在拆分數據幀后沒有使用df.reset_index(drop=True)
重置索引。 重置第一個數據幀的索引可以將第二個數據幀合並到它。
根據我的經驗,在關鍵列中有一些NaN
是通常的罪魁禍首。 嘗試至少這3個行的兩個第二df
“s(其中unique_id
是用於合並的鍵列),看看是否有幫助:
print(df[unique_id].duplicated().sum())
df.drop_duplicates(subset=unique_id, inplace=True)
assert(df[unique_id].duplicated().sum() == 0)
我有兩個大型數據框的合並問題,因為盡管有合適的值,但合並會返回NaN值。 兩個df的形狀如下:
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和Motor = 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
我不知道為什么不合並“輸出扭矩”列...
感謝任何幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.