我有两个表:销售表和产品表,这两个表共享“PART NUMBER”列。 销售表中的“PART NUMBER”列不是唯一的,但在产品表中是唯一的。 (见下图销售表和产品表的快照)
我试图将等效的“描述”添加到销售表上的每个“零件号”,然后我遵循了 examples来自 Pandas 网站 我的代码
sales.join(part_table, on='PART NUMBER')
但是我得到了这个错误:
ValueError: columns overlap but no suffix specified: Index([u'PART NUMBER'], dtype='object')
谁能解释一下这个错误的含义以及解决方法?
非常感谢!
最佳答案
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/