python - 使用来自另一个满足特定条件的数据框的数据在数据框中创建新列
问题描述
我是 python/编码的新手,如果我犯了一个愚蠢的错误,请原谅我。我正在尝试根据两个数据框中的日期和股票代码匹配的位置,使用来自另一个数据框 stock_data 的数据(价格)在数据框投资组合中创建一个新列。这两个数据框具有不同的维度。
这是我尝试过的:
portfolio['Price'] = stock_data[(stock_data['Date']== portfolio['Date'])& (stock_data['ticker']==(portfolio['Ticker']))]['Adj Close']
我也尝试过使用 for 循环,但仍然出现以下错误:
ValueError: Lengths must match
我究竟做错了什么?
解决方案
merge
正是为了这个目的而存在的。
portfolio.merge(stock_data[['Date', 'ticker', 'Adj Close']],
how='inner',
left_on=['Date', 'Ticker'],
right_on=['Date', 'ticker'])
portfolio.columns = list(portfolio.columns[:-1]).append('Price') # rename last col
推荐阅读
- sql - 循环遍历多个记录的函数,如果不满足日期格式,则将该行存储在表中
- javascript - 表单 react-bootstrap 中的数据和时间
- python - python vscode ImportError:没有名为simplejson的模块
- python - 了解在文本分类中使用什么 keras 和 TensorFlow
- git - 为什么 GitLab 合并分支的 git 日志图倒置了?
- typescript - 并非所有代码路径都通过多次批量写入返回值 Google Firestore Cloud Function Typescript
- php - 当我在网站上使用 php 和 html 时,如何通过 sql 查询输入当前时间 + 12 小时和 30 分钟
- typescript - 打字稿:如何输入可变参数?
- html - 你能把 HTML 连接到 FIREBASE
- powershell - 无法使用 Out-File 或 Add-Content 记录函数输出