Python 合并导致数据进入错误列

Python 合并导致数据进入错误列,python,pandas,dataframe,merge,Python,Pandas,Dataframe,Merge,我有两个数据帧: df1: df2 我正在尝试在df1['ID code']和df2['CID\u code']上合并这些数据帧。我想将df1附加到df2上,如果存在匹配项,则输入值。如果没有对手,楠就可以了 因此,考虑到这一逻辑,我编写了一个合并: df1_plus_df2 = pd.merge(df2, df1, how="left", left_on=['CID_CODE'], right_on=['ID CODE']) 现在,结果合并几乎正是我所需要的 我正在获取值,但它们正在覆盖现有

我有两个数据帧:

df1:

df2

我正在尝试在
df1['ID code']
df2['CID\u code']
上合并这些数据帧。我想将df1附加到df2上,如果存在匹配项,则输入值。如果没有对手,楠就可以了

因此,考虑到这一逻辑,我编写了一个合并:

df1_plus_df2 = pd.merge(df2, df1, how="left", left_on=['CID_CODE'], right_on=['ID CODE'])
现在,结果合并几乎正是我所需要的

我正在获取值,但它们正在覆盖现有列。 df1加上df2:

        CD_Code   CID_CODE   OC_NME    OC_CDE      ID CODE   CD1   CD2
0         Mal3     11529     6A        Main Area   NaN       NaN   NaN
1         Mal2     11526     11526.0   1A          NaN       NaN   NaN
        CD_Code   CID_CODE   OC_NME    OC_CDE      ID CODE   CD1   CD2
0         Mal3     11529     6A        Main Area   NaN       NaN   NaN
1         Mal2     11526     6B        Side Area   11526.0   1A    NWZ
如果您在
df1\u plus\u df2[1]
中看到,这些值已经覆盖了前两列中的值。我也没有从df1中得到第三列来继续

总的来说,奇怪的是,我无法理解为什么列会被追加,但是这些值会覆盖现有的df2值

这是我需要的输出,我不确定我做了什么错事没有得到它: df1加上df2:

        CD_Code   CID_CODE   OC_NME    OC_CDE      ID CODE   CD1   CD2
0         Mal3     11529     6A        Main Area   NaN       NaN   NaN
1         Mal2     11526     11526.0   1A          NaN       NaN   NaN
        CD_Code   CID_CODE   OC_NME    OC_CDE      ID CODE   CD1   CD2
0         Mal3     11529     6A        Main Area   NaN       NaN   NaN
1         Mal2     11526     6B        Side Area   11526.0   1A    NWZ

我真的很感谢你的帮助。谢谢

要合并的列是什么
CID_code
ID code
具有相同的值11526。如果您尝试附加这两个数据帧,它将无法知道如何合并它们,因为没有指定条件

请更清楚地解释您要合并的内容

编辑

我运行了你的代码,这就是我看到的

df1 = pd.DataFrame({"ID CODE": [11526.0, 11527.0], "CD1" : ["1A", "1C"], "CD2": ["NWZ", "NWZ"]})
df2 = pd.DataFrame({"CD_Code": ["Mal3", "Mal2"], "CID_CODE": [11529, 11526], "OC_NME": ["6A", "6B"], "OC_CDE": ["Main Area", "Side Area"]})

df3 = pd.merge(df2, df1, left_on=['CID_CODE'], right_on=['ID CODE'], how='left')
输出:

    CD_Code CID_CODE    OC_NME      OC_CDE      ID CODE   CD1   CD2
0   Mal3    11529       6A          Main Area   NaN       NaN   NaN
1   Mal2    11526       6B          Side Area   11526.0   1A    NWZ

合并前你在做什么?您使用的是什么版本?

嗨,我编辑了这篇文章,以便对这些值有一点了解。这是我的错误,很抱歉造成混淆。我正在根据
CID\u code
中的值合并帧。我想看看它们的值是否存在于
ID code
中,以及它们是否将它们附加到数据帧中。我不知道你的意思是什么。除此之外,这是非常多余的。当我运行你的代码时,它工作正常。请看我的编辑。唯一的另一件事是这些值以Excel表格的形式出现,我正在将表格导入数据框。它们是大文件,df1约为650行,df2约为6000行。当我尝试合并时,我得到一个错误“无法合并对象和float64列”。我正在对字符串进行一次转换,然后得出结果,我已经在问题中发布了结果,我被卡住了。熊猫版本0.25.2我看到了。您的问题是,如果两者都是数字类型,则11526.0==11526为真,但当您将两者转换为字符串时,它们并不相同,因为它检查“11526.0”==“11526”,这就像比较“hello”==“hello.0”,这是假的。