如何找到两个事件在组中的时间差

时间:2019-06-16 12:06:57

标签: python pandas scikit-learn

有一个数据帧,其中包含以下信息检测器ID,通道ID(每个检测器都有一些通道)和时间戳(为简单起见,使其为整数)以及在给定的次数中{ {1}},detector_id)对。

如何计算自给定(channel_iddetector_id)对中的最后一个非零事件以来经过的天数?

这里是一个例子:

channel_id

我尝试通过以下方式解决此问题:

df = pd.DataFrame({
    "time": [1, 1, 2, 3, 3, 4, 4],
    "detector_id": [0, 0, 0, 0, 0, 0, 1],
    "channel_id": [0, 0, 1, 0, 1, 1, 1],
    "counts": [0, 1, 0, 1, 0, 1, 0],
})

它产生以下结果:

df["diff"] = df["time"] - df.groupby(["detector_id", "channel_id"])['time'].diff()

如您所见,给定的解决方案未考虑 time detector_id channel_id counts diff expected 0 1 0 1 0 NaN NaN 1 2 0 1 1 1.0 NaN 2 3 0 1 0 2.0 1.0 3 4 0 0 1 NaN NaN 4 5 0 1 0 3.0 3.0 5 6 0 1 1 5.0 4.0 6 7 1 1 0 NaN NaN 列。一旦看到counts,我们就应该将差设为零,否则传播。

1 个答案:

答案 0 :(得分:1)

这应该很接近,但是需要对您的完整数据进行测试:

Webpack (v4.34.0)