各行にイベントに関する情報が含まれ、イベントが成功したかどうかを示すデータフレームがあります。私は非成功イベント間のデルタを計算したい、私はフィールド間のdiffを計算する方法を知っているが、フィルタを使用するときは分からない。Pandasを使用してフィルタを使用して値の差を計算します
私のデータフレームは、このような構造を持っている:私が欲しいもの
Timestamp Status
0 2012-01-01 OK
1 2012-01-02 OK
2 2012-01-03 FAIL
3 2012-01-05 OK
4 2012-01-06 OK
5 2012-01-07 FAIL
は、次のようにこのようsomtethin、失敗するまで、各行のための時間を計算することである。
Timestamp Status Days_until_next_fail
0 2012-01-01 OK 2
1 2012-01-02 OK 1
2 2012-01-03 FAIL 0
3 2012-01-05 OK 2
4 2012-01-06 OK 1
5 2012-01-07 FAIL 0
私はこの試みた:
をdf['days_until_next_failure'] = df.Timestamp - df[(df.Status == '1')].Timestamp(+1)
しかし、これはNaTを返します。ドキュメントには、フィルタリングと使用を適用するためのものは見つかりませんシフト。 1つの選択肢は、最後からデータフレームを反復することですが、それは少し非効率的です。
これは 'cumsum'の仕事です...あなたが望むものを得るには、数行のコードが必要です。 ( 'cumsum'はデータ内のある点まで何個あるかを教えてくれます) –