Creating an empty Pandas DataFrame column with a fixed first value then filling it with a formula
我想在现有的数据框架中创建一个emtpy列,其中第一个值只在一列中为=100。在这之后,我想迭代并用一个公式填充列的其余部分,比如行[t-1]*(1+行[b][t])
非常类似于:创建一个空的熊猫数据帧,然后填充它?
但不同之处在于,将"c"列的第一个值固定为100 vs完全公式。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | import datetime import pandas as pd import numpy as np todays_date = datetime.datetime.now().date() index = pd.date_range(todays_date-datetime.timedelta(10), periods=10, freq='D') columns = ['A','B','C'] df_ = pd.DataFrame(index=index, columns=columns) df_ = df_.fillna(0) data = np.array([np.arange(10)]*3).T df = pd.DataFrame(data, index=index, columns=columns) df['B'] = df['A'].pct_change() df['C'] = df['C'].shift() * (1+df['B']) ## how do I set 2016-10-03 in Column 'C' to equal 100 and then calc consequtively from there? df |
试试这个。不幸的是,可能需要类似于for循环的东西,因为您将需要根据前面的rows值计算下一行,该值在向下移动行时需要保存到变量中(在我的示例中是c_列):
1 2 3 4 5 6 7 8 | c_column = [] c_column.append(100) for x,i in enumerate(df['B']): if(x>0): c_column.append(c_column[x-1] * (1+i)) df['C'] = c_column |