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

左联接表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()的方法,该方法类似于数据库联接操作 来合并数据帧。

  • 问题内容: 这是我保存在两个变量中的两个数据框: 我正在尝试使用以下代码合并这两个: 添加how =’left’的原因是,我的ranking_df中的数据点少于标准df中的数据点。 预期的行为是这样的: 但是我得到这个错误: ValueError:您正在尝试合并object和int64列。如果要继续,则应使用pd.concat 但是我不希望使用concat,因为我想合并树而不只是添加它们。 我想到