熊猫合并返回NaN

2Ob*_*Obe 9 python merge dataframe pandas

我有两个大型Dataframe合并的问题,因为虽然有合适的值,但合并返回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
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

我用的代码是:

MergeDat=MergeDat.merge(Motor,how="left")
print(MergeDat)
Run Code Online (Sandbox Code Playgroud)

其中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
Run Code Online (Sandbox Code Playgroud)

我不知道为什么Output Torque列没有合并......

感谢任何帮助!

jez*_*ael 21

您需要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)
Run Code Online (Sandbox Code Playgroud)
#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")
Run Code Online (Sandbox Code Playgroud)

  • 如果dtypes不同,大熊猫会打印警告会很棒. (6认同)
  • 在 pandas 0.25.1 中,我遇到了这个确切的问题,但是两列上的“.astype(str)”(包含 DOI 的“object”)不会改变任何内容。 (5认同)