2017-10-08 8 views
0
df.at[0,'Initial'] = 10000 
df.loc[1:99,'Initial'] = df['Initial'].shift(1) + (df['Initial'].shift(1) * df['Pct Change']) 


Initial 
10000.000000 
10063.995538 
NaN 
NaN 
NaN... 

私は10000の開始値を作成しているし、しかし前回値+(前回値* PCT変更)データフレームは、(インデックス)を適切な値を追加しない

を追加することになっているこのコードでこんにちはガイズ2行目以降にNaNを生成し続ける

何かアドバイスしてください。

Initial   Pct Change 
10000.000000 -0.000710 
10063.995538  0.006400 
NaN    0.002827 
NaN    0.009148 
NaN    0.000694 

この構文df.locかしら私は10063.995538 +(* 0.002827 10063.995538) される初期の3行が好きしかし、それがNaN を生産している[1:99 '初期']が間違っていますか?

私は唯一の初期にはこれを適切に行うことによって移入することができます:

df.at[0,'Initial'] = 10000 
df.loc[1:,'Initial'] = df['Initial'].shift(1) + (df['Initial'].shift(1) * df['Pct Change']) 
df.loc[2:,'Initial'] = df['Initial'].shift(1) + (df['Initial'].shift(1) * df['Pct Change']) 
df.loc[3:,'Initial'] = df['Initial'].shift(1) + (df['Initial'].shift(1) * df['Pct Change']) 
`....` 

をしかし、なぜ[1:99 '初期'] df.locません動作しますか?

+0

を見てみてください'Initial'の値は? –

+0

こんにちは私は使用 df.at [0、 '初期'] = 10000 私はこの2行以外の初期以外の行を持っていません –

+0

あなたのコードから、私はあなたが幾分反復計算。残念ながら、このコードは 'Initial'カラムの現在の値に作用するので、最初のカラムのほかに' NaN'が発生するため、非常に遠くには行きません。 –

答えて

1

不要、すなわちない、初期は何cumprod

df['Initial']=np.append(10000,df.iloc[1:,].PctChange.add(1).cumprod().values*10000) 
df 
Out[261]: 
    PctChange  Initial 
0 -0.000710 10000.000000 
1 0.006400 10064.000000 
2 0.002827 10092.450928 
3 0.009148 10184.776669 
4 0.000694 10191.844904 
+0

すごくいい。 * 10000は私を理解するのに時間がかかりました。それで、なぜかnumpyのタグを付け加えました。 Numpyは通常 – Dark

+0

を獲得します@Bharathshettyちょうどマルチ...〜: – Wen

+1

通常、私はデータフレームを拡張するために連結で* 10000を使用します。それは私にしばらく時間がかかりました。両端を共通にして、最後に乗算する。私は本当にあなたの数学のスキルに感謝:) – Dark

1

そのより良いあなたはそれが操作のこの種のことになるとループのために行くのforループ

df.loc[0,'Initial'] = 10000 
for i in range(1,len(df)): 
    df.loc[i,'Initial'] = df.loc[i-1,'Initial'] + (df.loc[i-1,'Initial'] * df.loc[i,'Pct Change']) 
 
     Initial Pct Change 
0 10000.000000 -0.000710 
1 10064.000000 0.006400 
2 10092.450928 0.002827 
3 10184.776669 0.009148 
4 10191.844904 0.000694 
+0

これは良い代替手段でもあります。ありがとうございました:) –

+0

あなたはループを取り除くことに興味があれば... – Wen

+0

私はそれを分析していました。 – Dark

関連する問題