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

时间:2019-10-30 01:43:00

标签: python-3.x pandas datetime yahoo-finance

我正在尝试在从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'将“日期”列设置为一直有效的datetimeindex。我目前不确定如何克服这一障碍。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

在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]

此外,在熊猫中,我们通常尽量不使用for循环。

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