我想找到自第一次观察事件以来经过的时间。为此,我将每个观察结果保存在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中每一行的时间偏移量(只是时间戳 - 最小值(时间戳))?
答案 0 :(得分:1)
让我在这里设置一个玩具示例:
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