为什么我合并两个数据帧并得到一个NaN列



我正在做的事情就像:

df1['column1'] = df1.merge(df2, 
how = 'left', 
left_on = 'column2', 
right_on = 'column3')['column4']

我不想保存合并,因为df2中有太多列,我不想手动删除它们。但问题是,这种操作导致CCD_ 1中存在大量NaN。我还没有弄清楚原因,但我发现在我做了以下更改后,就不会有任何NaN了。

df1['column1'] = df1.merge(df2, 
how = 'left', 
left_on = 'column2', 
right_on = 'column3')['column4'].tolist()

有人知道这件事吗?

您使用的是左联接,其中整个左数据帧都将存在,并且只添加与右数据帧通用的数据帧。NAN之所以存在,是因为键在两个表中都匹配,但该行中的其他列包含空值。

如果您只想在两个数据帧中使用公共/交叉行,则应在df1.merge()函数中使用how = 'inner'

最新更新