如何计算 pandas 数据框中每列的 2 个相邻值之间的差异?

How to calculate the diff between values of 2 adjacent values across every column in a pandas dataframe?

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

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

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

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)