【发布时间】:2019-08-12 04:58:41
【问题描述】:
我有两个列表,我想加入其中一个。
这就是我生成第一个列表的方式:
# 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
但是,当我尝试生成最终列表时:
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')
运行 dtypes 将两个列表标识符作为对象返回。
【问题讨论】:
标签: python sql excel oracle pandas