内ILOCソリューションをスピードアップ:私は列B
とC
ために、次のロジックを実装したい私は<code>DataFrame</code>を以下しているパンダのデータフレーム
dates = pd.date_range('20150101', periods=4)
df = pd.DataFrame({'A' : [5,10,3,4]}, index = dates)
df.loc[:,'B'] = 0
df.loc[:,'C'] = 0
df.iloc[0,1] = 10
df.iloc[0,2] = 3
print df
Out[69]:
A B C
2015-01-01 5 10 3
2015-01-02 10 0 0
2015-01-03 3 0 0
2015-01-04 4 0 0
:
B(k+1) = B(k) - A(k+1)
C(k+1) = B(k) + A(k+1)
私は、次のコードを使用してこれを行うことができます。
for i in range (1, df.shape[0]):
df.iloc[i,1] = df.iloc[i-1,1] - df.iloc[i,0]
df.iloc[i,2] = df.iloc[i-1,1] + df.iloc[i,0]
print df
これは与える:私が探している答えである
A B C
2015-01-01 5 10 3
2015-01-02 10 0 20
2015-01-03 3 -3 3
2015-01-04 4 -7 1
を。問題は、これをDataFrame
に適用すると、大きなデータセットが遅く実行されることです。非常に遅い。これを達成するより良い方法はありますか?
理由で2番目の「B」 ' 5?それは '0'ではないでしょうか?そして、なぜ13番の代わりに2番目の 'C'15があるのですか? –
おっと!すみません、私の間違いです。更新しました。 –
私は少し質問を変えて、おもちゃの解決策を追加しました... –