有一个数据帧,其中包含以下信息检测器ID,通道ID(每个检测器都有一些通道)和时间戳(为简单起见,使其为整数)以及在给定的次数中{ {1}},detector_id
)对。
如何计算自给定(channel_id
,detector_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
,我们就应该将差设为零,否则传播。
答案 0 :(得分:1)
这应该很接近,但是需要对您的完整数据进行测试:
Webpack (v4.34.0)