'KeyError: (Timestamp (' 1993-01-29 00:00:00 '),' colName ') - PullRequest
0 голосов
/ 30 октября 2019

Я пытаюсь создать новый столбец в моем фрейме данных фондового рынка, который был импортирован из Yahoo. В данный момент я работаю только с одним символом.

symbol['profit']= [[symbol.loc[ei, 'close1']-symbol.loc[ei, 'close']] if symbol[ei, 'shares']==1 else 0 for ei in symbol.index]

Я ожидаю, что в фрейме данных появится новый столбец с надписью «прибыль», но вместо этого я получаю это каквывод:

KeyError: (Timestamp('1993-01-29 00:00:00), 'shares')

Я импортировал csv в df с parse_dates=True index_col='Date', установив столбец «Дата» в качестве действующего индекса даты и времени. Я не уверен, как преодолеть этот блокпост на данный момент. Любая помощь будет оценена!

1 Ответ

0 голосов
/ 30 октября 2019

В своем операторе if вы забываете .loc

symbol['profit']= [symbol.loc[ei, 'close1']-symbol.loc[ei, 'close'] if symbol.loc[ei, 'shares']==1 else 0 for ei in symbol.index]

Также в пандах мы обычно стараемся не использовать для цикла столько, сколько могли бы.

symbol['profit']=np.where(symbol.shares==1,symbol.close1-symbol.close,0)
...