我正在尝试在从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。我目前不确定如何克服这一障碍。任何帮助将不胜感激!
答案 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)