使用计算创建动态列

Create Dynamic Columns with Calculation

我有一个名为 prices 的数据框,其中包含以下公司的历史股票价格:

['APPLE', 'AMAZON', 'GOOGLE']

到目前为止,在一位友好用户的帮助下,我能够使用以下代码为每个时期创建一个数据框:

import pandas as pd
import numpy as np
from datetime import datetime, date

prices = pd.read_excel('database.xlsx')

companies=prices.columns
companies=list(companies)
del companies[0]

timestep = 250
prices_list = [prices[day:day + step] for day in range(len(prices) - step)]

现在,我需要评估每家公司 251 天期间的价格变化(Price251/Price1;Price252/Price2;价格 253/价格等等),以及为它们中的每一个创建一列。

我还想将列名设为动态,这样我就可以将其复制到更长的数据库中。

所以,我会得到一个类似这样的数据框: open image here

在这里你可以找到数据帧头(3):Initial Dataframe

IIUC,试试这个:

def create_cols(df,num_dates):
    for col in list(df)[1:]:
        df['{}%'.format(col)] = - ((df['{}'.format(col)].shift(num_dates) - df['{}'.format(col)]) / df['{}'.format(col)].shift(num_dates)).shift(- num_dates)
    return df

create_cols(prices,251)

您只需将列格式化为百分比。