关于python:使用固定的第一个值创建一个空的Pandas DataFrame列,然后使用公式填充它

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