左联接和ValueError:错误传递了55个项目,放置意味着1

时间:2018-09-21 10:27:56

标签: python pandas dataframe left-to-right

我有两个数据框

  • 一个大:myTradeFrame(7401x27)
  • 一个小:specialsData(3x3)

specialsData看起来像这样:

   coll_cusip tran_type  maturity_max
0  912810SC3        BB          1.80
1  912810SD1        BB          1.76
2  9128284V9        BB          1.08

然后代码是这样的:

myTradeFrame['NewColumn']=pd.merge(myTradeFrame, specialsData, how='left', left_on = ['coll_cusip','tran_type'], right_on=[ 'coll_cusip', 'tran_type'])

这行代码给我一个错误,即使两个数据帧中都存在键列。我想念什么?

the error message i get is : 
    len(self.mgr_locs)))
ValueError: Wrong number of items passed 55, placement implies 1
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "/apps/qtrinst/install/python/anaconda/envs/sx_anaconda/lib/python3.5/site-packages/IPython/core/interactiveshell.py", line 2850, in run_ast_nodes
    if self.run_code(code, result):
  File "/apps/qtrinst/install/python/anaconda/envs/sx_anaconda/lib/python3.5/site-packages/IPython/core/interactiveshell.py", line 2927, in run_code
    self.showtraceback(running_compiled_code=True)
TypeError: showtraceback() got an unexpected keyword argument 'running_compiled_code'

基本上,myTradeFrame中的NewColumn在coll_cusip和tran_type相交处应具有“ maturity_max”列的值

1 个答案:

答案 0 :(得分:1)

pd.merge返回分配给单个列的数据帧。 因此,错误。您可以将代码替换为以下

myTradeFrame = pd.merge(myTradeFrame, specialsData, how='left', on=[ 'coll_cusip', 'tran_type'],suffixes=('_left','_right'))

提示:如果左右数据框中的键相同,则仅在on上使用。