Merge在Pandas中返回nan



我想在公共列ID上合并df1df2df2看起来像这样:

ID      TYPE   VALUE1 VALUE2    VALUE3
0   672117  Single 0.25   923.77    94.08
1   MSN242  DOUBLE 0.21   1219.31   105.77
2   673312  DOUBLE 0.20   4030.08   113.00
3   222255  Single 0.23   1119.38   126.69

代码:

df3 = pd.merge(df1, df2, on ='ID', how = 'left')

似乎有2510个通用ID(所有ID匹配):

len(list(set(df1.ID) and set(df2.ID)))
>>> 2510

但是df3显示TYPE,VALUE1,VALUE2,VALUE3列大部分都是nan。出了什么问题?


编辑:df1(形状2510 rows × 22 columns)看起来像这样:

ID      CRITERION1  DATE                MEAS1       MEAS2       MEAS3    COMPOSITION    DPMT %CONTENT1  %CONTENT2 MeanGroup %Article1   %CA_Count   %CA_Count1  CATEGORY1 CATEGORY2 CODE    Group   COST1 COST2 COST3 COST4
0   000002  Y           2009-01-03 11:52:46 0.930150    17.412708   1.583333    Component   P   0.407859    0.979346    C   0.401572    0.000098    0.946168    Z   L   LEVEL1 NY   1767.0  1767.0  1767.0  1767.0
1   XC-004  Y           2009-01-03 11:52:46 1.898295    0.548192    0.250000    Component   NP  0.874263    0.999742    C   0.797250    0.000015    0.995345    Z   M   LEVEL1 NU   15525.0 15525.0 15525.0 15525.0

由于合并(连接)左表,它将保留左表(df1)中的所有id,并删除df2中所有不匹配的id。然后,它从只剩下nan的id中填充所有不存在的VALUE1、VALUE2、VALUE3。

我假设您的ID不匹配非常大,并且您的表中有len(df1.ID) - 2510个nan行。

最新更新