python - 在一个键列上加入两个数据帧/错误 : 'columns overlap but no suffix specified'

标签 python sql join pandas syntax-error

我有两个表:销售表和产品表,这两个表共享“PART NUMBER”列。 销售表中的“PART NUMBER”列不是唯一的,但在产品表中是唯一的。 (见下图销售表和产品表的快照)

enter image description here

enter image description here

我试图将等效的“描述”添加到销售表上的每个“零件号”,然后我遵循了 examples来自 Pandas 网站 我的代码

sales.join(part_table, on='PART NUMBER')

但是我得到了这个错误:

ValueError: columns overlap but no suffix specified: Index([u'PART NUMBER'], dtype='object')

谁能解释一下这个错误的含义以及解决方法?

非常感谢!

最佳答案

我想你想做一个 merge而不是 join :

sales.merge(part_table)

这是一个示例数据框:

In [11]: dfa = pd.DataFrame([[1, 2], [3, 4]], columns=['A', 'B'])

In [12]: dfb = pd.DataFrame([[1, 'a'], [3, 'b'], [3, 'c']], columns=['A', 'C'])

In [13]: dfa.join(dfb, on=['A'])
ValueError: columns overlap but no suffix specified: Index([u'A'], dtype='object')

In [14]: dfa.merge(dfb)
Out[14]:
   A  B  C
0  1  2  a
1  3  4  b
2  3  4  c

从文档中不清楚这是否是故意的(我认为 on 将用作列)但是如果您添加后缀,我们可以按照异常消息查看发生了什么:

In [21]: dfb.join(dfa, on=['A'], lsuffix='_a', rsuffix='_b')
Out[21]:
   A_a  C  A_b   B
0    1  a    3   4
1    3  b  NaN NaN
2    3  c  NaN NaN

In [22]: dfb.join(dfa, lsuffix='_a', rsuffix='_b')
Out[22]:
   A_a  C  A_b   B
0    1  a    1   2
1    3  b    3   4
2    3  c  NaN NaN

它会忽略 on kwarg 并只进行连接。

关于python - 在一个键列上加入两个数据帧/错误 : 'columns overlap but no suffix specified' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26027877/

相关文章:

python - 升级到 Catalina 后找不到 Pandas 和 Jupyter

java - 如何防止 hibernate 从日期时间中删除时间?

mysql - 使用父 ID 和子 ID 加入

带有 except 的 SQL 临时表

jquery - Pyramid 如何处理 xhr.abort()

python - 使用 scikit RandomForestClassifier 的平均降低精度使用哪个精度分数

python - 根据 async def 实现协程

mysql - MySQL 中可以预定义查询吗?

java - sql中实现双连接

php - 在 PHP 中使用嵌套查询生成 JSON 对象