当前位置: 首页 > 知识库问答 >
问题:

左联接表pandas出现问题(valueError:您试图合并object和int64列。)[副本]

东郭阳德
2023-03-14

我有两个列表,我想离开加入一个。

# 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')

当我尝试这样做时,我会得到同样的错误:

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将两个列表标识符作为Object返回。

共有1个答案

颜修真
2023-03-14

使用pandas.dataframe.mergehow='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

Pandas中关于合并的详细说明如下:
Pandas合并101

 类似资料:
  • 这些问题都没有涉及这个问题:问题1和问题2,我在pandas文档中也找不到答案。 您好,我正在尝试查找此错误的潜在原因: 输出: 下面是我传递给的数据文件;: 输出:

  • 我正在尝试根据两个数据页中共享的“别名编号”列名合并两个数据页。 以下是我所写的内容:

  • 问题内容: 我的查询有问题,该查询显示商店列表以及与之关联的产品数量。我已经玩了很长时间的左联接等,但无济于事。这些表具有以下结构: 商店含有表列:, 产品含表列:,,, 查询如下: 我没有去买有0件商品的商店。请问我该如何实现? 基础数据库是MySQL。 谢谢!马耳他 问题答案: 您需要在左侧购物,因为右侧可能没有数据,在本例中为PRODUCT。 不仅如此,您还需要WHERE条件作为LEFT-J

  • 问题内容: 我有三个表: 命令 OrderId,int PK CustomerId,与客户之间为int FK,允许为NULL 顾客 CustomerId,int PK CompanyId,将FK转换为Company,不允许为NULL 公司介绍 CompanyId,int PK 名称nvarchar(50) 我想选择所有订单,无论是否有客户,如果有客户,也要选择客户的公司名称。 如果我使用此查询…

  • 本文向大家介绍使用Pandas合并,联接和连接DataFrame,包括了使用Pandas合并,联接和连接DataFrame的使用技巧和注意事项,需要的朋友参考一下 在本教程中,我们将学习使用pandas 库合并,联接和连接DataFrame 。我认为您已经熟悉数据框和熊猫库。让我们一一看这三个操作。 合并 我们有一个名为pandas.merge()的方法,该方法类似于数据库联接操作 来合并数据帧。

  • 我目前面临着一个问题,在使用Pandas处理和操作数据帧方面,我似乎无法解决这个问题。 为了让您了解我正在谈论的数据帧以及您将在我的代码中看到的数据帧: 我正在尝试将数据集“data”的“exercise”列中的单词更改为数据集“exercise”的“name”列中的单词。 例如,数据数据集锻炼列中的首字母缩略词Dl应更改为锻炼数据集名称列中的死电梯。 我尝试过许多方法,但似乎都失败了。我每次都收