我有两张桌子:销售表和产品表和这两个表共享'PART NUMBER'列。 销售表中的“PART NUMBER”列不是唯一的,但在产品表中是唯一的。 (参见销售表和产品表快照的下图)
我试图在销售表上为每个'PART NUMBER'添加等效的'Description',然后我跟随pandas网站上的examples 我的代码
sales.join(part_table, on='PART NUMBER')
但我收到了这个错误:
ValueError: columns overlap but no suffix specified: Index([u'PART NUMBER'], dtype='object')
有人可以解释这个错误意味着什么,以及如何解决它?
非常感谢!
答案 0 :(得分:8)
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并且正在进行连接。