0
の行のペアを処理するために、マップまたはapplymapまたは類似:ここ使用パンダは、私は、カウンタ間の違いに車の中でマイルをカウントするようなカウンタを処理しようとしているデータフレーム
が入力されている。
Index, Counter
2016-06-01 13:00:00,225907.9
2016-06-01 14:00:00,225908.9
2016-06-01 15:00:00,225909.9
2016-06-01 16:00:00,225910.9
2016-06-01 17:00:00,225911.9
2016-06-01 18:00:00,225912.9
2016-06-01 19:00:00,225913.9
ここでは、所望の出力です:
Index, Counter,Increase
2016-06-01 13:00:00,225907.9,0.0 # by definition for the start of the df
2016-06-01 14:00:00,225908.9,1.0
2016-06-01 15:00:00,225909.9,1.0
2016-06-01 16:00:00,225910.9,1.0
2016-06-01 17:00:00,225910.9,0.0
2016-06-01 18:00:00,225911.9,1.0
2016-06-01 19:00:00,225912.9,1.0
これは当然のループを、簡単です:(擬似コード:問題ワットから、これは迅速なコピーである&ペーストこれ以上の列)
for i in range(1,len(df)):
(previous, current)=df.loc[row:row+1, ['Counters'].values]
df.at[i, 'Increase'] = current[0] - previous[0]
もちろん、私たちはループを使用しないことを好みます。私の質問は、applymap
またはmap
またはそれに類するもので、この計算を行うことができますか?ほとんどの場合、1行の値から1つの値を返すように見えます:2行から値を取り出し、1つの値を返すのはどうですか?
あなたの所望の出力がために、入力と一致していませんがなぜ最初の行が0でなく、その後のすべての行が1.0ですか?とにかく 'df ['Increase'] = df ['Counter']を実行することができます。diff()' – EdChum
Doh!それと同じくらい簡単です - 私は決して考えなかった.diff()ありがとう! – djnz0feh
あなたはまだ期待された出力があなたの説明と異なる理由は説明していませんが、私の理解は最初の行では0、それ以外の行では1.0でなければなりません – EdChum