0

イベントが最初に観測されてからの経過時間を知りたいです。このために、各観察結果を CSV ファイルに保存しました。各イベントは一意のハッシュによって識別されます。

現在、私は次のことを行っています。

from pandas import *
from bz2 import BZ2File
events = DataFrame.from_csv(BZ2File('events.csv.bz2', 'r'), sep='\t', header=0, index_col=None)
m = events.groupby('hash')['timestamp'].min()

この時点で、ハッシュと最初の観測のタイムスタンプによってインデックス付けされたシリーズがあります。これを使用して、イベント DataFrame の各行の時間オフセットを取得するにはどうすればよいですか (単純にタイムスタンプ - 分(タイムスタンプ))?

4

1 に答える 1

2

ここでおもちゃの例をセットアップしましょう。

In [38]: rng = pd.date_range('2012-8-1', freq='T', periods=100)
In [39]: hashes = np.random.randint(0, 10, len(rng))
In [40]: obs = np.arange(len(rng))
In [41]: df = DataFrame({'hash' : hashes, 'timestamp' : rng.asobject},
   ....:                index=obs)

次に、各ハッシュの時間差を取得します。

In [42]: grouped = df.set_index('hash', append=True).groupby(level='hash')

In [44]: grouped.transform(lambda x: x-x.min())
Out[44]:
        timestamp
   hash
0  3      0:00:00
1  5      0:00:00
2  1      0:00:00
3  8      0:00:00
4  6      0:00:00
5  8      0:02:00
6  1      0:04:00
7  7      0:00:00
8  3      0:08:00
9  5      0:08:00
10 8      0:07:00
11 1      0:09:00
12 2      0:00:00
...
...
...
94 2      1:22:00
95 6      1:31:00
96 1      1:34:00
97 0      1:21:00
98 8      1:35:00
99 0      1:23:00
于 2012-09-11T17:09:03.083 に答える