1
パンダでは、データを列の値でグループ化し、各タイムスタンプとそのグループの最初のタイムスタンプとの時間差を計算します。pandas:groupby各グループの最初の要素との時間差を計算します
例えば、以下のデータフレームを検討:
# Create data.
d = {'foo': ['001', '001', '002', '002', '002'],
'timestamp': ['2015-02-24 19:12:00', '2015-02-24 21:38:00', '2015-02-25 03:41:00', '2015-02-25 03:44:00', '2015-02-25 03:49:00']}
df = pd.DataFrame(d, columns = ['foo', 'timestamp'])
df['timestamp'] = pd.DatetimeIndex(pd.to_datetime(df['timestamp'])).tz_localize('UTC')
>>> print df
foo timestamp
0 001 2015-02-24 19:12:00+00:00
1 001 2015-02-24 21:38:00+00:00
2 002 2015-02-25 03:41:00+00:00
3 002 2015-02-25 03:44:00+00:00
4 002 2015-02-25 03:49:00+00:00
を所望の出力は次のようになります
foo timestamp output
0 001 2015-02-24 19:12:00+00:00 NaT
1 001 2015-02-24 21:38:00+00:00 02:26:00
2 002 2015-02-25 03:41:00+00:00 NaT
3 002 2015-02-25 03:44:00+00:00 00:03:00
4 002 2015-02-25 03:49:00+00:00 00:08:00
.diff()
の使用は、以下ではなく、所望の結果を得ます。
>>> d.groupby('foo')['timestamp'].diff()
0 NaT
1 02:26:00
2 NaT
3 00:03:00
4 00:05:00
ありがとう!理想的には、各グループの 'output'の最初の要素は' 00:00:00'ではなくNaN(または 'NaT')にしたいと思います。あなたもこれを行う方法を示すことができれば、私は答えを受け入れたものとしてマークします。 – Adam