データフレームの日時の列値に基づいて列に一意の各値の前回どのように見つけますか?

FRCI:

私が持っているpandas dataframeにソートしてcolumn 'DT'、このように:

 S             DT             
100    2000-12-12 05:00:00
100    2000-12-12 05:00:50     
89     2000-12-12 05:01:20     
89     2000-12-12 05:02:00     
89     2000-12-12 05:02:35     
98     2000-12-12 05:03:15     
98     2000-12-12 05:03:50     
98     2000-12-12 05:04:28     
98     2000-12-12 05:05:05     
112    2000-12-12 05:05:47
112    2000-12-12 05:06:15
112    2000-12-12 05:07:00

どのように私は、任意の与えられた値の前回を見つけることができますcolumn 'S'。このデータから?

S = 112のために同じように、その前は98のために、それは上のPREV = 89などを与える必要があり、98を与える必要があります。私は、私は私のコードで、後にアクセスをすることができ、別の変数に任意の「S」の以前の値を保存したいと思います。私はコーディングの世界に新しいですとすべてのヘルプは深く理解されるであろう。

エズレル:

アイデアは使用であるSeries.shiftことにより、連続するグループの最後なしにすべての行を置き換え、Series.where欠損値と最後の前方充填mising値に。

変更のようなソリューションも、同じ値を持つ複数のグループ場合は作業89112

df['prev'] = df['S'].shift().where(df['S'].ne(df['S'].shift())).ffill()
print (df)
      S                   DT   prev
0   100  2000-12-12 05:00:00    NaN
1   100  2000-12-12 05:00:50    NaN
2    89  2000-12-12 05:01:20  100.0
3    89  2000-12-12 05:02:00  100.0
4    89  2000-12-12 05:02:35  100.0
5    98  2000-12-12 05:03:15   89.0
6    98  2000-12-12 05:03:50   89.0
7    98  2000-12-12 05:04:28   89.0
8    98  2000-12-12 05:05:05   89.0
9   112  2000-12-12 05:05:47   98.0
10  112  2000-12-12 05:06:15   98.0
11  112  2000-12-12 05:07:00   98.0

新しいの唯一の以前の値が必要な場合DataFrame

df1 = df.assign(prev=df['S'].shift()).loc[df['S'].ne(df['S'].shift()), ['S','prev']]
print (df1)
     S   prev
0  100    NaN
2   89  100.0
5   98   89.0
9  112   98.0

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=21449&siteId=1