2
この質問の似たようなバージョンが尋ねられました。私はnoの回答を見たことがありますか、rolling_applyを見ていますが、このコードのより高速版をどのように実装できるか見ていません。可能でなければならない。DataFrame.applyは前の行を参照できますか?
データフレームでは、値が別の列と等しいか、2番目の列に応じて前の値(前の行)と等しい列を作成したいとします。私はループでこれを行うことができますが、それは遅いです。
import pandas as pd
df = pd.DataFrame({'a':[0,1,2,0,1,2,0,1,2],'t':[0,1,2,3,4,5,6,7,8]})
startTime = df.loc[0,'t']
df.loc[:,'startTime'] = startTime
for idx in range(df.shape[0]):
if df.loc[idx,'a'] == 0:
startTime = df.loc[idx,'t']
df.loc[idx,'startTime'] = startTime
df
あまりにも速いです。+1 – piRSquared
完璧!実際のコードではなくデモでこのコードを使用すると、私にとってはうまくいくことがわかりました。これをより一般的なものにするための推奨事項はdf.indexに再インデックスすることでした。ありがとうございました –
@PaulFlemingああ、それは 'df ['t']'と 'df.index'が同じなので、ちょうど間違いだったのです。私はdf ['t'] 'のインデックスに合格したと思った。今編集されました。 – ayhan