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“更好”。我会记住的。