2017-02-18 4 views
0

私が知っている1つの計算で問題が起こっているのはおそらく単純ですが、頭痛を与えています。列と行を同時に操作するPandas

私はパンダのデータフレームを持っており、同じ行に1つの値と1に1つの値が乗算された列を生成する必要があります。さらに、行-1の値を1つ合計して実際の行場合

     AAPL   GLD AAPL_cumu_rtn GLD_cumu_rtn AAPL_Dly_rtn \ 
Date 
2011-01-03 329.570000 138.000000  100.000000 100.000000   NaN 
2011-01-04 331.290012 134.750000  100.521896  97.644928  0.005219 
2011-01-05 334.000008 134.369995  101.344178  97.369562  0.008180 
2011-01-06 333.729988 133.830002  101.262247  96.978262  -0.000808 
2011-01-07 336.120003 133.580002  101.987439  96.797103  0.007162 

      GLD_Dly_rtn AAPL_invest GLD_invest 

2011-01-03   NaN  650000.0 350000.0 
2011-01-04 -0.023551  653392.3 341757.1 
2011-01-05 -0.002820  658737.1 340793.3 
2011-01-06 -0.004019   0.0   0.0 
2011-01-07 -0.001868   0.0   0.0 

...私は上の自分自身とAPPL_investとGLD_invest乗算前の行にAAPL_investによってAAPL_Dly_rtnされた列との和を充填し、終了したい

     AAPL   GLD AAPL_cumu_rtn GLD_cumu_rtn AAPL_Dly_rtn \ 
Date 
2011-01-03 329.570000 138.000000  100.000000 100.000000   NaN 
2011-01-04 331.290012 134.750000  100.521896  97.644928  0.005219 
2011-01-05 334.000008 134.369995  101.344178  97.369562  0.008180 
2011-01-06 333.729988 133.830002  101.262247  96.978262  -0.000808 
2011-01-07 336.120003 133.580002  101.987439  96.797103  0.007162 

      GLD_Dly_rtn AAPL_invest GLD_invest 

2011-01-03   NaN  650000.0 350000.0 
2011-01-04 -0.023551   0.0   0.0 
2011-01-05 -0.002820   0.0   0.0 
2011-01-06 -0.004019   0.0   0.0 
2011-01-07 -0.001868   0.0   0.0 

:これまでのところ私はこれを持っています誰もがforループを使用せずに私はこれを行うことができますどのようなアイデアを持っています私は感謝します!

ありがとうございました!!!!

答えて

1

これは.cumprodで行うことができると思います。

たとえば、(df['GLD_Dly_rtn'] + 1).fillna(1)を入力して.cumprod()を入力したとします。我々はリターンを正規化し、初期投資で単純に掛けることができるので、金にとってはこれがそうです。

df['GLD_total'] = (df['GLD_Dly_rtn'] + 1).fillna(1).cumprod() * 350000 

ここのfillna部分は、最初のNaNだけを埋めるためのものです。そこので、これまですっきりまたは、より一般的な方法かもしれないが、私は今

編集でそれを考えることはできません

0 350000.000000 
1 341757.150000 
2 340793.394837 
3 339423.746183 
4 338789.702625 

私は、その結果

データフレームに累積リターン列が既にあることに気付いただけです。 df['GLD_total'] = (df['GLD_cumu_rtn']/100) * 350000

+0

うわー、実現しませんでした!どうもありがとうございました!!!また、私は後で助けてくれるかも知れません。どうもありがとうございました!私はあなたの助けに感謝します! – jurreaserna

関連する問題