【问题标题】:Pandas DataFrame: Add Column with Sum of Row Values using Column Axis indices?Pandas DataFrame:使用列轴索引添加具有行值总和的列?
【发布时间】:2020-11-08 12:48:48
【问题描述】:

查看以前提出的问题,我找不到有用的答案,因为我的列是通过混合使用 pytrends 和 yfinance 值生成的。

这是获取相关数据框的代码:

import yfinance as yf
from pytrends.request import TrendReq as tr

ticker = "TER"
pytrends = tr(hl='en-US', tz=360)

# =============================================================================
# Get Stock Information
# These variables are stored as DataFrames
# =============================================================================
stock = yf.Ticker(ticker)
i = stock.info
stock_info = {'Ticker':ticker}
stock_info.update(i)

# =============================================================================
# Get Google Trends Ranking for our Stock
# =============================================================================
longName = stock_info.get('longName')
shortName = stock_info.get('shortName').split(',')[0]

keywords = [ticker, longName, shortName]
pytrends.build_payload(keywords, timeframe='all')
search_rank = pytrends.interest_over_time()

这将为我的 search_rank(第一行)返回一个 pandas 数据框:

date                | TER | Teradyne, Inc. | Teradyne | isPartial
2004-01-01 00:00:00 | 25  | 0              | 1        | False

我想要做的是删除 isPartial 列并将其替换为“Rank”列,该列将从第 1、2 和 3 列中获取值并将它们加在一起,因此它看起来像这样:

date                | TER | Teradyne, Inc. | Teradyne | Rank
2004-01-01 00:00:00 | 25  | 0              | 1        | 26

任何关于我如何完成这项工作的想法都将是一个巨大的帮助!

PS:我不想使用实际列名的原因是因为此信息会根据股票代码而改变。另外,我是python的一个极端菜鸟,基本上还在学习>.

【问题讨论】:

    标签: python pandas dataframe yfinance


    【解决方案1】:

    删除一列

    del search_rank['isPartial']
    

    添加计算列

    search_rank['Rank'] = df.apply(lambda row: row[0]+row[1] + row[2], axis=1)
    

    我用上面的修改测试了你的代码 这是完整的代码

    import yfinance as yf
    from pytrends.request import TrendReq as tr
    
    ticker = "TER"
    pytrends = tr(hl='en-US', tz=360)
    
    # =============================================================================
    # Get Stock Information
    # These variables are stored as DataFrames
    # =============================================================================
    stock = yf.Ticker(ticker)
    i = stock.info
    stock_info = {'Ticker':ticker}
    stock_info.update(i)
    
    # =============================================================================
    # Get Google Trends Ranking for our Stock
    # =============================================================================
    longName = stock_info.get('longName')
    shortName = stock_info.get('shortName').split(',')[0]
    
    keywords = [ticker, longName, shortName]
    pytrends.build_payload(keywords, timeframe='all')
    search_rank = pytrends.interest_over_time()
    del search_rank['isPartial']
    search_rank['Rank'] = search_rank.apply(lambda row: row[0]+row[1]+row[2] , axis=1)
    
    print(search_rank)
    

    输出:

     Date        TER  Teradyne, Inc.  Teradyne  Rank
    2004-01-01   25               0         1    26
    2004-02-01   25               0         1    26
    2004-03-01   29               0         1    30
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-09
      • 2017-12-31
      • 1970-01-01
      • 2016-05-03
      • 1970-01-01
      • 1970-01-01
      • 2018-06-09
      相关资源
      最近更新 更多