如何计算 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)
我创建了一个形状为 (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)