[英]Pandas Merge returns NaN
I have issues with the merging of two large Dataframes since the merge returns NaN values though there are fitting values.我在合并两个大型数据帧时遇到问题,因为尽管存在拟合值,但合并返回 NaN 值。 The two dfs are shaped like:
这两个 dfs 的形状如下:
df1 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 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
I use the code:我使用代码:
MergeDat=MergeDat.merge(Motor,how="left")
print(MergeDat)
where MergeDat= df1 and Motor= df2其中 MergeDat= df1 和 Motor= df2
As result it returns:结果它返回:
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
I have no idea why the Output Torque column is not merged...我不知道为什么输出扭矩列没有合并......
Appreciate any help!感谢任何帮助!
You need same dtype
of joined columns:您需要连接列的相同
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")
In my case, it was because I haven't reset the index after splitting the data frame, using df.reset_index(drop=True)
.就我而言,这是因为我在拆分数据帧后没有使用
df.reset_index(drop=True)
重置索引。 Resetting the index of the first data frame enabled merging a second data frame to it.重置第一个数据帧的索引可以将第二个数据帧合并到它。
Having some NaN
's in the key column(s) is the usual culprit from my experience.根据我的经验,在关键列中有一些
NaN
是通常的罪魁祸首。 Try at least the 2nd of these 3 lines on both df
's (where unique_id
is the key column used for merging) and see if it helps:尝试至少这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)
I have issues with the merging of two large Dataframes since the merge returns NaN values though there are fitting values.我有两个大型数据框的合并问题,因为尽管有合适的值,但合并会返回NaN值。 The two dfs are shaped like:
两个df的形状如下:
df1 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 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
I use the code:我使用代码:
MergeDat=MergeDat.merge(Motor,how="left")
print(MergeDat)
where MergeDat= df1 and Motor= df2其中MergeDat = df1和Motor = df2
As result it returns:结果返回:
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
I have no idea why the Output Torque column is not merged...我不知道为什么不合并“输出扭矩”列...
Appreciate any help!感谢任何帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.