Left join и ValueError: неверное количество пропущенных элементов 55, размещение подразумевает 1 - PullRequest
0 голосов
/ 21 сентября 2018

У меня есть два кадра данных

  • один большой: 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'

По сути, NewColumn в myTradeFrame должен иметь значения столбца "maturity_max" на пересечении coll_cusip и tran_type

1 Ответ

0 голосов
/ 21 сентября 2018

pd.merge возвращает фрейм данных, который назначается одному столбцу.Отсюда и ошибка.Вы можете заменить код кода следующим

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

Совет: если клавиши в левом и правом кадрах данных одинаковы, просто используйте.

...