【问题标题】:Creating new column in dataframe using data from another dataframe meeting certain criteria使用来自另一个满足特定条件的数据框的数据在数据框中创建新列
【发布时间】:2021-07-07 18:51:42
【问题描述】:

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

这是我尝试过的:

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

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

ValueError: Lengths must match

我做错了什么?

【问题讨论】:

  • stock_data中给出条件时,满足条件的记录数小于或大于portfolio中的记录数。如果您检查两者的长度,您就会知道。

标签: python pandas


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-18
    • 1970-01-01
    • 2021-12-05
    • 2019-03-19
    • 2017-07-05
    • 1970-01-01
    • 2020-03-02
    相关资源
    最近更新 更多