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値に。
変更のようなソリューションも、同じ値を持つ複数のグループ場合は作業89
に112
。
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