我想在公共列ID
上合并df1
和df2
。df2
看起来像这样:
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行。