我有一个代表肿瘤之间接触事件的数据集.数据集按"基本肿瘤"分组,然后按"邻居肿瘤"和"时间范围"排序,如下所示:
index | base-tumor | neighbor-tumor | timeframe |
---|---|---|---|
0 | Track_1 | Track_4 | 1 |
1 | Track_1 | Track_4 | 2 |
2 | Track_1 | Track_4 | 3 |
3 | Track_1 | Track_4 | 4 |
4 | Track_1 | Track_4 | 8 |
5 | Track_1 | Track_4 | 9 |
6 | Track_1 | Track_4 | 10 |
7 | Track_1 | Track_6 | 1 |
8 | Track_1 | Track_6 | 2 |
因为数据帧是按基本肿瘤分组的,所以我有多个具有上升基本肿瘤的数据帧.
我试图得到的最终结果是一个包含所有曲目的词典,其中包含一个包含所有联系人事件的词典,然后它们包含一个帧列表,其中有一系列联系人事件.看起来是这样的:
{Track_1: {Track_4: [[1,4], [8,10],
Track_6: [[1,2]]},
Track_2: {Track_5: [[10, 14], [20, 25], [28, 31]}}
到目前为止,我做了一个额外的列,如果有序列,则显示1,如果没有联系人事件序列,则显示0.
def get_sequence(df):
for id, grp in df:
prev_id = grp['id_2'].shift(1).fillna(0)
prev_frame = grp['FRAME'].shift(1)
conditions = [
((grp['id_2'] == prev_id) &
(grp['FRAME']) - prev_frame == 1)
]
choises = [1]
grp['sequence'] = np.select(conditions, choises, default=0)
print(grp)
现在我陷入了困境,不知道我是否朝着正确的方向前进,如果是的话,如何迈出下一步.