【问题标题】:How to calculate the diff between values of 2 adjacent values across every column in a pandas dataframe?如何计算熊猫数据框中每一列的 2 个相邻值的值之间的差异?
【发布时间】:2021-01-15 07:08:02
【问题描述】:

我通过连接 Sensex-30 索引的每只股票的 ['Close'] 列创建了一个形状为 (252,60) 的数据集,并通过将每个 ['Close'] 列向下移动 1 级来制作列。在这里,我想计算每一天和每只股票的移动价格和当前价格之间的差异,我试图在 colab 笔记本中这样做,但我得到一个错误IndexError: single positional indexer is out-of-bounds

数据集和代码太长无法展示,可以看这个colab notebook

【问题讨论】:

  • 请不要在链接中附加代码,并为这种情况提供一个最低限度的可重现示例。谢谢。

标签: python-3.x pandas dataframe data-analysis stock


【解决方案1】:

减少你的代码,我发现下面的作品

import requests
df = pd.DataFrame()
for stock in ['RELIANCE','INFY','HCLTECH','TCS','BAJAJ-AUTO',
         'TITAN','LT','NESTLEIND','TECHM','ASIANPAINT',
         'M&M','ICICIBANK','POWERGRID','HINDUNILVR','SUNPHARMA',
         'TATASTEEL','AXISBANK','SBIN','ULTRACEMCO','BAJAJFINSV',
        'ITC','NTPC','BAJFINANCE','BHARTIARTL','MARUTI',
         'KOTAKBANK','HDFC','HDFCBANK','ONGC','INDUSINDBK']:
    url = "https://query1.finance.yahoo.com/v7/finance/download/"+stock+".BO?period1=1577110559&period2=1608732959&interval=1d&events=history&includeAdjustedClose=true"
    df = pd.concat([df, pd.read_csv(io.BytesIO(requests.get(url).content), index_col="Date")
                    .loc[:,"Close"]
                    .to_frame().rename(columns={"Close":stock})], axis=1)
    
profit={f"{c}_profit":lambda dfa: dfa[c]-dfa[c].shift(periods=1) for c in df.columns}
df = df.assign(**profit)
df.shape

输出

(252, 60)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-26
    • 2015-08-09
    • 2016-05-05
    • 2021-02-06
    • 2022-12-17
    • 1970-01-01
    • 1970-01-01
    • 2020-08-02
    相关资源
    最近更新 更多