使用计算创建动态列

时间:2018-12-06 02:31:09

标签: python-3.x pandas dataframe dynamic-columns

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

['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

1 个答案:

答案 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)

您只需要将列的格式设置为百分比即可。