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

时间:2016-10-13 13:35:42

标签: python pandas dataframe

我想在现有的DataFrame中创建一个emtpy列,其中第一个值只有一列= 100。之后我想迭代并用公式填充列的其余部分,如row [ C] [t-1] *(1 +行[B] [t])

非常类似于: Creating an empty Pandas DataFrame, then filling it?

但不同之处在于将“C”列的第一个值固定为100与完全公式相比。

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

1 个答案:

答案 0 :(得分:1)

试试这个。不幸的是,可能需要类似于for循环的东西,因为您需要根据先前的行值计算下一行,该值需要在向下移动行时保存到变量中(在我的示例中为c_column):

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