使用满足特定条件的另一个数据框中的数据在数据框中创建新列

时间:2021-04-12 17:04:59

标签: python pandas

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

这是我试过的:

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

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

ValueError: Lengths must match

我做错了什么?

1 个答案:

答案 0 :(得分:0)

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