讲师中心 微信公众号
AI工具推荐 视频效率加速

如何将行为标注数据框按帧展开并正确处理未标注的间隙帧

冬雪大大_8513

冬雪大大_8513

发布时间:2026-08-21 12:22:44

|

633人浏览过

|

来源于php中文网

原创

如何将行为标注数据框按帧展开并正确处理未标注的间隙帧

本文介绍如何将基于起止帧区间的行为标注数据框(如动物行为视频标注)扩展为逐帧行为标签序列,关键在于准确填充每个行为的有效帧范围,并将超出该范围的帧设为 nan,避免错误延续。

本文介绍如何将基于起止帧区间的行为标注数据框(如动物行为视频标注)扩展为逐帧行为标签序列,关键在于准确填充每个行为的有效帧范围,并将超出该范围的帧设为 nan,避免错误延续。

在动物行为视频分析中,标注软件常导出以“起始帧–结束帧”为区间的稀疏标注表(而非逐帧标注)。例如,某段“turning”行为从第 0 帧开始、第 2 帧结束(即覆盖帧 0 和 1),而下一段“immobility”从第 2 帧开始、第 5 帧结束(覆盖帧 2、3、4)。直接使用 reindex(..., method='ffill') 会错误地将前一行为延续至后续未定义区间(如帧 11–15 被误标为 “immobility”),违背原始标注逻辑。

正确做法是:先按完整帧索引(0 到最大帧号)重索引并前向填充,再依据每行的 Frame stop 值动态截断——当当前帧索引 ≥ Frame stop 时,强制置 BehaviorNaN

以下是完整实现代码:

Pandas Linux版 2.3.3
Pandas Linux版 2.3.3

Pandas 2.3.3 历史版本下载,来自 PyPI 官方发布,适合旧项目兼容、数据分析脚本复现和指定环境安装。

下载
import pandas as pd
import numpy as np

# 原始稀疏标注数据
data = {
    'Frame start': [0, 2, 5, 9, 16],
    'Frame stop': [2, 5, 9, 11, 20],
    'Behavior': ['turning', 'immobility', 'mild movement', 'immobility', 'jump']
}
df = pd.DataFrame(data).set_index('Frame start')

# 步骤1:构建完整帧索引(0 到 max_frame_stop - 1,此处取 0~19)
max_frame = df['Frame stop'].max()  # 20 → 覆盖帧 0~19
new_index = list(range(max_frame))

# 步骤2:reindex + ffill 行为与 Frame stop 列
new_df = df.reindex(new_index, method='ffill')

# 步骤3:精准截断——仅保留 frame_start ≤ 当前帧 < frame_stop 的行为
# 即:当前帧索引 >= Frame stop 时,Behavior 设为 NaN
new_df.loc[new_df['Frame stop'] <= new_df.index, 'Behavior'] = np.nan

# 提取最终结果(仅 Behavior 列,以 Frame start 为索引)
result = new_df['Behavior']
print(result)

输出结果严格符合预期:

Frame start
0           turning
1           turning
2        immobility
3        immobility
4        immobility
5     mild movement
6     mild movement
7     mild movement
8     mild movement
9        immobility
10       immobility
11            NaN
12            NaN
13            NaN
14            NaN
15            NaN
16             jump
17             jump
18             jump
19             jump
Name: Behavior, dtype: object

⚠️ 注意事项:

  • Frame stop 在原始数据中表示第一个不包含的帧(即区间为 [start, stop)),这是视频帧索引的常规约定;若实际为闭区间 [start, stop],则条件应改为 new_df['Frame stop'] ;
  • 若存在重叠区间或非单调 Frame start,需预先排序并检查逻辑一致性;
  • 对于超大视频(如数万帧),建议使用 pd.arrays.SparseArray 或分块处理以节省内存;
  • 最终结果可直接用于时序建模、行为持续时间统计或与视频帧对齐可视化。

该方法兼顾准确性与可读性,是行为分析工作流中处理稀疏标注的关键预处理步骤。

热门AI工具

更多
讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

Lovart
Lovart Hot

一款面向视觉设计创作的AI设计平台,可通过智能体和画布工作流辅助制作海报、Logo、网页、PPT及其他视觉内容。

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

相关专题

更多
Python 时间序列分析与预测
Python 时间序列分析与预测

本专题专注讲解 Python 在时间序列数据处理与预测建模中的实战技巧,涵盖时间索引处理、周期性与趋势分解、平稳性检测、ARIMA/SARIMA 模型构建、预测误差评估,以及基于实际业务场景的时间序列项目实操,帮助学习者掌握从数据预处理到模型预测的完整时序分析能力。

280

2025.12.04

Python 数据清洗与预处理实战
Python 数据清洗与预处理实战

本专题系统讲解 Python 在数据清洗与预处理中的核心技术,包括使用 Pandas 进行缺失值处理、异常值检测、数据格式化、特征工程与数据转换,结合 NumPy 高效处理大规模数据。通过实战案例,帮助学习者掌握 如何处理混乱、不完整数据,为后续数据分析与机器学习模型训练打下坚实基础。

192

2026.01.31

Python数据分析与Pandas高级实战
Python数据分析与Pandas高级实战

本专题围绕 Python 数据分析展开,系统讲解 Pandas 的高级用法,包括数据清洗、透视表、时间序列分析以及多表合并与分组操作。通过实战案例,帮助开发者掌握高效处理与分析数据的方法,提高数据处理效率与分析能力。

251

2026.04.13

AI视频生成软件推荐
AI视频生成软件推荐

本专题汇总了当前主流的AI视频生成软件推荐与排行榜单,涵盖seko、AniShort、剧云、Lovart、LiblibAI及立刻mv等热门工具。同时整理了各软件在文生视频、图生视频、时长限制、画质表现及免费额度等方面的差异对比,助您快速选对适合创作需求的AI视频生成工具。

140

2026.09.16

ai生成视频的工具免费版合集
ai生成视频的工具免费版合集

本专题汇总了当前免费AI生成视频工具的排行榜与推荐清单,涵盖seko、讯飞智作、AniShort及剧云、Lovart等多模型集成平台。同时整理了各工具的免费额度、输出时长、水印政策及适用场景差异,助您快速选择合适工具开启AI视频创作。

60

2026.09.16

Pandas时间序列分析与可视化报表
Pandas时间序列分析与可视化报表

本专题整理Pandas日期转换、时间索引、重采样、滚动窗口、时区处理、plot绘图、Styler表格样式和报表输出方法。

60

2026.09.16

Pandas数据筛选索引与清洗处理
Pandas数据筛选索引与清洗处理

本专题整理Pandas中的loc、iloc、条件筛选、query查询、缺失值处理、重复值删除、类型转换和字符串列清洗方法。

40

2026.09.16

Pandas数据读取导入与文件导出处理
Pandas数据读取导入与文件导出处理

本专题整理Pandas读取CSV、Excel、JSON、SQL、Parquet等文件的方法,以及to_csv、to_excel、to_sql和to_parquet等常用数据导出流程。

40

2026.09.16

GDB怎么设置断点
GDB怎么设置断点

本专题介绍GDB按照函数名、源代码行号和文件位置设置断点的方法,详细说明run、continue、next、step等命令的配合使用,帮助定位程序崩溃、逻辑异常及代码未按预期执行的问题。

360

2026.09.11

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Pandas 官方文档与用户指南
Pandas 官方文档与用户指南

共0课时 | 0人学习

Pandas 教程
Pandas 教程

共15课时 | 1.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn