首页 > 解决方案 > 合并在 Pandas 中返回 nan

问题描述

我想合并df1df2在 common column 上IDdf2看起来像这样:

    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

标签: pythonpandasdataframe

解决方案


由于您向左合并(加入),它将保留左表(df1)中的所有 ID,并从 df2 中删除所有不匹配的 ID。然后,它从只剩下 NaN 的 ID 中填充所有不存在的 VALUE1、VALUE2、VALUE3。

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


推荐阅读