使用计算创建动态列
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)
您只需将列格式化为百分比。
我有一个名为 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)
您只需将列格式化为百分比。