Python 左连接表时出现问题(ValueError:您正在尝试合并object和int64列。)

Python 左连接表时出现问题(ValueError:您正在尝试合并object和int64列。),python,sql,excel,oracle,pandas,Python,Sql,Excel,Oracle,Pandas,我有两个列表,我想在其中加入一个 以下是我生成第一个列表的方式: # NB Oracle connection first_list = pd.read_sql('SELECT firstname, lpad(identifier, 4, 0) from table1', con=Connection) 第二份名单: second_list = pd_read_excel('excelfile.xlsx', converters={'identifier': str}) 稍微简化一下:第一个

我有两个列表,我想在其中加入一个

以下是我生成第一个列表的方式:

# NB Oracle connection
first_list = pd.read_sql('SELECT firstname, lpad(identifier, 4, 0) from table1', con=Connection)
第二份名单:

second_list = pd_read_excel('excelfile.xlsx', converters={'identifier': str})
稍微简化一下:第一个列表如下所示:

   name  identifier
0  Firstname     1201
1  Secondname       0
2  Thirdname     1855
3  Fourthname    3333
4  Fifthname     1414
   identifier    BIC          BANK
0  0             UNKNOWN      Unknown
1  1201          DNBANKNOKK   DNB Bank ASA 
2  1855          EIDSNO21     Eidsberg Sparebank
3  3333          RYGSNO21     Sparebank1 Østfold Akershus
4  1414          LOSKNO21     Sparebank 1 Lom og Sjåk
   name          identifier  BIC          BANK
0  Firstname     1201        DNBANKNOKK   DNB Bank ASA
1  Secondname       0        UNKNOWN      Unknown
2  Thirdname     1855        EIDSNO21     Eidsberg Sparebank
3  Fourthname    3333        RYGSNO21     Sparebank1 Østfold Akershus
4  Fifthname     1414        LOSKNO21     Sparebank 1 Lom og Sjåk
第二个列表如下所示:

   name  identifier
0  Firstname     1201
1  Secondname       0
2  Thirdname     1855
3  Fourthname    3333
4  Fifthname     1414
   identifier    BIC          BANK
0  0             UNKNOWN      Unknown
1  1201          DNBANKNOKK   DNB Bank ASA 
2  1855          EIDSNO21     Eidsberg Sparebank
3  3333          RYGSNO21     Sparebank1 Østfold Akershus
4  1414          LOSKNO21     Sparebank 1 Lom og Sjåk
   name          identifier  BIC          BANK
0  Firstname     1201        DNBANKNOKK   DNB Bank ASA
1  Secondname       0        UNKNOWN      Unknown
2  Thirdname     1855        EIDSNO21     Eidsberg Sparebank
3  Fourthname    3333        RYGSNO21     Sparebank1 Østfold Akershus
4  Fifthname     1414        LOSKNO21     Sparebank 1 Lom og Sjåk
我希望最终列表如下所示:

   name  identifier
0  Firstname     1201
1  Secondname       0
2  Thirdname     1855
3  Fourthname    3333
4  Fifthname     1414
   identifier    BIC          BANK
0  0             UNKNOWN      Unknown
1  1201          DNBANKNOKK   DNB Bank ASA 
2  1855          EIDSNO21     Eidsberg Sparebank
3  3333          RYGSNO21     Sparebank1 Østfold Akershus
4  1414          LOSKNO21     Sparebank 1 Lom og Sjåk
   name          identifier  BIC          BANK
0  Firstname     1201        DNBANKNOKK   DNB Bank ASA
1  Secondname       0        UNKNOWN      Unknown
2  Thirdname     1855        EIDSNO21     Eidsberg Sparebank
3  Fourthname    3333        RYGSNO21     Sparebank1 Østfold Akershus
4  Fifthname     1414        LOSKNO21     Sparebank 1 Lom og Sjåk
但是,当我试图列出最后的清单时:

final_list = first_list.join(second_list, on='identifier', how='left')
我收到以下错误:ValueError:您正在尝试合并object和int64列。如果您希望继续,您应该使用pd.concat

尝试此操作时,我会遇到相同的错误:

first_list['identifier'] = first_list['identifier'].astype(str)
second_list['identifier'] = second_list['identifier'].astype(str)
final_list = first_list.join(second_list, on='identifier', how='left')
运行数据类型会将两个列表标识符作为对象返回。

how='left'
一起使用:

final_list = pd.merge(first_list, second_list, on='identifier', how='left')

print(final_list)
         name  identifier         BIC                         BANK
0   Firstname        1201  DNBANKNOKK                 DNB Bank ASA
1  Secondname           0     UNKNOWN                      Unknown
2   Thirdname        1855    EIDSNO21           Eidsberg Sparebank
3  Fourthname        3333    RYGSNO21  Sparebank1 Østfold Akershus
4   Fifthname        1414    LOSKNO21      Sparebank 1 Lom og Sjåk
有关
熊猫
中的
合并
的详细说明,请参见:

how='left'
一起使用:

final_list = pd.merge(first_list, second_list, on='identifier', how='left')

print(final_list)
         name  identifier         BIC                         BANK
0   Firstname        1201  DNBANKNOKK                 DNB Bank ASA
1  Secondname           0     UNKNOWN                      Unknown
2   Thirdname        1855    EIDSNO21           Eidsberg Sparebank
3  Fourthname        3333    RYGSNO21  Sparebank1 Østfold Akershus
4   Fifthname        1414    LOSKNO21      Sparebank 1 Lom og Sjåk
有关
熊猫
中的
合并
的详细说明,请参见:

像下面这样尝试使用
合并

import pandas as pd

final_list = pd.merge(first_list, second_list, how='outer',left_on=['identifier'], right_on=['identifier'])

尝试如下使用
merge

import pandas as pd

final_list = pd.merge(first_list, second_list, how='outer',left_on=['identifier'], right_on=['identifier'])

谢谢,使用merge和left join解决了这个问题:)我想merge比join“更好”。我会记住这一点。谢谢,使用merge和left join解决了这个问题:)我想merge比join“更好”。我会记住的。