You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:按Stimulus特定序列分组DataFrame中的时间点

解决方案

核心思路

要实现按指定Stimulus序列分组,需先把被无关刺激(5、6、14)隔开的连续目标行分割成独立块,再逐一匹配目标序列,提取对应Timepoint。

代码实现

import pandas as pd

# 1. 加载你的数据(如果是从文件读取,替换成pd.read_csv等方法)
data = {
    'Timepoint': [75300, 76158, 76661, 76716, 76769, 78722, 79333, 80056, 80559, 80614, 82617, 83228, 83728, 84231, 84286, 86289, 86900, 87440, 87943, 87998, 90001, 90614],
    'Stimulus': [5,6,14,7,8,9,10,6,14,7,9,10,6,14,7,9,10,6,14,7,9,10]
}
df = pd.DataFrame(data)

# 2. 标记目标行并生成分组ID(把被无关刺激隔开的连续目标行归为一组)
df['is_target'] = df['Stimulus'].between(7, 10)
df['group_id'] = (~df['is_target']).cumsum()
target_df = df[df['is_target']].copy()

# 3. 定义目标序列并匹配分组
seq_full = [7,8,9,10]
seq_short = [7,9,10]

group_full = []  # 存符合7,8,9,10的时间点列表
group_short = [] # 存符合7,9,10的时间点列表

for gid, group in target_df.groupby('group_id'):
    current_stimulus = group['Stimulus'].tolist()
    current_time = group['Timepoint'].tolist()
    if current_stimulus == seq_full:
        group_full.append(current_time)
    elif current_stimulus == seq_short:
        group_short.append(current_time)

# 查看结果
print("符合7,8,9,10的时间点组:", group_full)
print("符合7,9,10的时间点组:", group_short)

结果说明

运行后:

  • group_full会输出[[76716, 76769, 78722, 79333]],对应数据中唯一完整的7-8-9-10序列
  • group_short会输出三个子列表,对应所有7-9-10的连续序列

内容的提问来源于stack exchange,提问作者I Paul Roy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 18:20:25