【发布时间】:2022-08-02 17:53:07
【问题描述】:
我有一个代表肿瘤之间接触事件的数据集。数据集按“base-cell”分组,然后按“Neighbor-cell”和“Time-frame”排序,如下所示:
| index | base-cell | neighbor-cell | 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)
现在我被卡住了,不知道我是否朝着正确的方向前进,如果是,下一步该如何走。