首页 > 解决方案 > 'KeyError:(时间戳('1993-01-29 00:00:00'),'colName')

问题描述

我正在尝试在从雅虎导入的股票市场数据框中创建一个新列。我目前只处理一个符号。

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'并将“日期”列设置为一直有效的日期时间索引。目前我不确定如何克服这个障碍。任何帮助,将不胜感激!

标签: python-3.xpandasdatetimeyahoo-finance

解决方案


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

同样在 pandas 中,我们通常尽量不使用 for 循环。

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

推荐阅读