首页 > 解决方案 > 使用来自另一个满足特定条件的数据框的数据在数据框中创建新列

问题描述

我是 python/编码的新手,如果我犯了一个愚蠢的错误,请原谅我。我正在尝试根据两个数据框中的日期和股票代码匹配的位置,使用来自另一个数据框 stock_data 的数据(价格)在数据框投资组合中创建一个新列。这两个数据框具有不同的维度。

这是我尝试过的:

portfolio['Price'] = stock_data[(stock_data['Date']== portfolio['Date'])& (stock_data['ticker']==(portfolio['Ticker']))]['Adj Close']

我也尝试过使用 for 循环,但仍然出现以下错误:

ValueError: Lengths must match

我究竟做错了什么?

标签: pythonpandas

解决方案


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

推荐阅读