我有一个名为价格的数据框,其中包含以下公司的历史股票价格:
['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; Price 253 / Price等)的价格变化,并为每个公司创建一个列其中
我还想将列名设置为动态,以便将其复制到更长的数据库中。
因此,我将得到一个类似于以下的数据框: open image here
在这里您可以找到数据帧头(3):Initial Dataframe
答案 0 :(得分:1)
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)
您只需要将列的格式设置为百分比即可。