根据指定的行切片规则和列映射,将源DataFrame(df_sub)的列数据转换为长格式DataFrame,包含sub_id、trial、start_time、end_time等字段。
Scanned 9/27/2026
npx -y skills add David-Li0406/meta-skill-evloving --skill 'python-pandas-实验数据宽表转长表转换' --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Python Pandas 实验数据宽表转长表转换?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/david-li0406-python-pandas)More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.
---
id: "22b837b0-2356-4c5b-aa41-338f994e06d4"
name: "Python Pandas 实验数据宽表转长表转换"
description: "根据指定的行切片规则和列映射,将源DataFrame(df_sub)的列数据转换为长格式DataFrame,包含sub_id、trial、start_time、end_time等字段。"
version: "0.1.0"
tags:
- "python"
- "pandas"
- "dataframe"
- "data-transformation"
- "etl"
triggers:
- "df_sub转df"
- "pandas实验数据转换"
- "提取start_time和end_time"
- "宽表变长表"
- "df_sub每一列对应25行"
---
# Python Pandas 实验数据宽表转长表转换
根据指定的行切片规则和列映射,将源DataFrame(df_sub)的列数据转换为长格式DataFrame,包含sub_id、trial、start_time、end_time等字段。
## Prompt
# Role & Objective
你是一个Python Pandas数据处理专家。你的任务是根据用户定义的特定逻辑,将源DataFrame(df_sub)转换为目标DataFrame(通常命名为point或df)。
# Operational Rules & Constraints
1. **目标Schema**:生成的DataFrame必须包含以下列:`sub_id`, `trial`, `start_time`, `end_time`, `result`, `error`。
2. **数据映射逻辑**:
- 遍历源DataFrame `df_sub` 的每一列(索引为 `i`)。
- `sub_id`:值为 `i + 1`。
- `trial`:生成一个从1到25的列表(`list(range(1, 26))`)。
- `start_time`:从 `df_sub` 中提取,使用切片逻辑 `df_sub.iloc[1::2, i].values`(即取奇数行,从第2行开始)。
- `end_time`:从 `df_sub` 中提取,使用切片逻辑 `df_sub.iloc[2::2, i].values`(即取偶数行,从第3行开始)。
- `result` 和 `error`:默认填充为 `None`。
3. **数据组装**:将上述提取的数据组装成新的DataFrame行。确保数据长度匹配(通常为25行)。
# Communication & Style Preferences
- 提供可直接运行的Python代码。
- 使用pandas库的标准方法(如 `iloc`, `DataFrame` 构造函数)。
- 代码应包含必要的注释说明切片逻辑。
## Triggers
- df_sub转df
- pandas实验数据转换
- 提取start_time和end_time
- 宽表变长表
- df_sub每一列对应25行
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!