の前のセルの値にカウントを追加する別の列 'A'のブール値に応じて、ある列 'B'に値を追加しようとしています。したがって、 'A'が真であれば、 'A'が偽である限り、カウントを開始します(つまり、それぞれ新しい行を1つ追加します)。 'A'がTrueの場合はリセットし、再度カウントを開始します。私は 'for'ループでこれを行うことができましたが、これは非常に時間がかかります。効率的な解決策がなくなるのではないかと疑問に思っていますか?Pandas
結果は次のようになります。
Date A B
01.2010 False 0
02.2010 True 1
03.2010 False 2
04.2010 False 3
05.2010 True 1
06.2010 False 2
私は両方のソリューションのタイミングをテストし、最初にソリューションに異なる出力 - 最初の行はソリューションに '1'を持ち、' B'列に '0'はありません。そして、 'len(df)= 7000':%timeit(al(df1))100ループでタイミングを確認した場合、3ループ:3.75ms /ループと%timeit(jez(df))ループ100回のうち、 3:ループ毎2.29ms」となる。最後に受諾のために2ポイントを失った。しかし、それがあなたのソリューションを受け入れるほうが良いと考えるならば、それはあなた次第です。 – jezrael
必要なら、問題ありません。 ;) – jezrael
@ jezrael、多くのありがとう。 Excel/vbaから来て、わたしは自分の提示したソリューションをより直感的に見つけ出し、実際に仕事をしました。それにもかかわらず、あなたの解決策はもっとパンダです。私はまだcumcount()とcumsum()の違いを調べなければなりません。 –