python-3.x - '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'
并将“日期”列设置为一直有效的日期时间索引。目前我不确定如何克服这个障碍。任何帮助,将不胜感激!
解决方案
在您的 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)
推荐阅读
- bash - bash脚本传递多行
- node.js - 错误!MongoNetworkError:无法连接到服务器 - 连接到另一个 wifi 网络后
- python - 更新整个表以应用新的自定义 save() 方法
- gatsby - Netlify 上的 Gatsby 构建错误:错误在文件中找到多个“根”查询
- r - 使用 lapply 返回存储在列表中的数据框满足条件的行名
- python - 如何根据条件在数据透视表中获取值
- ios - 如何快速根据另一个数组过滤数组?
- javascript - 值未正确传递给控制器操作的 Ajax 序列化表单
- python - Python Django - 多个用户之间共享的变量
- python - 如何从 src/main 目录中公开模块名称?