我试图在两个通道中探测器测量的能量事件之间创建一个符合矩阵。”“巧合”是指事件发生在用户指定的时间窗口内。数据当前存储在具有假样本数据的以下格式的数据框中:
Energy Timestamp Channel
___________________________
6 103 1
7 70 2
4 110 2
8 205 2
2 219 1
3 333 1
5 300 1
9 350 2
我需要以下格式的数据,这样,如果用户选择20的计时窗口,则生成的符合矩阵将为:
Channel 1 Energy: 1 2 3 4 5 6 7 8 9 10
Channel 2 Energy:_________________________________________
1| 0 0 0 0 0 0 0 0 0 0
2| 0 0 0 0 0 0 0 0 0 0
3| 0 0 0 0 0 0 0 0 0 0
4| 0 0 0 0 0 1 0 0 0 0
5| 0 0 0 0 0 0 0 0 0 0
6| 0 0 0 0 0 0 0 0 0 0
7| 0 0 0 0 0 0 0 0 0 0
8| 0 1 0 0 0 0 0 0 0 0
9| 0 0 1 0 0 0 0 0 0 0
10| 0 0 0 0 0 0 0 0 0 0
其中,现在只有满足条件的事件:
Event1_Timestamp < Event2_Timestamp + Timing window & Event1_Timestamp > Event2_Timestamp - Timing window
将保留在符合矩阵中,并丢弃所有非符合事件
我试过:
df2 = df.merge(df, on="Timestamp")
df3 = pd.crosstab(df2.Energy_x, df2.Energy_y)
但这种输出存在一些问题。它在时间戳而不是计时窗口范围内查找精确匹配,并且只列出出现的能量,而不是所有可能能量的线性间隔范围(0-8192个能量箱)。非常感谢您的帮助
让我们尝试使用
pd.merge_asof
和pd.crosstab
:其中df
那么
输出:
相关问题 更多 >
编程相关推荐