2017-09-19 14 views
0

レコードが下の表に示されていますが、readingdateはソートされインデックスとして設定されていますが、繰り返してみたいと思います。前の行で大きい場合は、メッセージを印刷します。Pandasで連続する行の値を比較する

readingdate  assetnumber reading 
2004-01-29 09:53:00  51737 2006.0 
2004-02-27 13:09:00  51737 6195.0 
2004-03-30 08:24:00  51737 11194.0 
2004-04-29 10:15:00  51737 14806.0 
2004-05-27 12:15:00  51737 18273.0 
2004-06-24 10:43:00  51737 21744.0 
2004-08-03 07:31:00  51737 24591.0 
2004-08-31 14:15:00  51737 27219.0 
2004-09-28 09:33:00  51737 29845.0 

私は次のコードを試しましたが、明らかに間違っています。私はitterrows()または他の方法を使ってこれを行う方法を知りませんでした。

for i , row in df1.iterrows(): 
    if row['reading'] > next(row['reading']): 
     print("Wrong Odometer") 
+0

出力に出力します。もちろん、私はそれを変更することができますが、私の主な挑戦はそれらの値を比較する方法です。 – jax

+2

'df1 ['reading']> df1 ['reading']を参照してください。 – Zero

+0

私はそれを試みた。私はシリーズの真理値はあいまいです。 a.empty、a.bool()、a.item()、a.any()またはa.all()を使用してください。 – jax

答えて

4

あなたはここにdiffまたはshiftを使用することができます。


オプション1
pd.Series.diff

if (df['reading'].diff(-1) > 0).any(): 
    print('Wrong Odometer') 

オプション2
pd.Series.shift

if (df['reading'] > df['reading'].shift(-1)).any(): 
    print('Wrong Odometer') 
+0

'shift'の例を表示できますか? –

+0

@MadPhysicist確かに、probsはありません。 –

+0

優れています。シフトとあらゆる関数とそのすべての連鎖を説明する良い文書があります。私はパンダの参考文献を見ましたが、十分な説明がありません。 – jax

関連する問題