如何从TUH语料EDF文件按固定顺序读取21通道数据至Excel并保留通道名?
解决方案
要实现固定通道顺序读取并在Excel首行保留通道名称,只需对代码做两处关键修改,以下是完整优化代码:
import numpy as np import mne import pandas as pd # 定义固定的21个通道顺序(核心:所有文件都将按此顺序输出) FIXED_CHANNELS = [ 'EEG FP1-REF','EEG FP2-REF','EEG F3-REF','EEG F4-REF','EEG C3-REF', 'EEG C4-REF','EEG P3-REF','EEG P4-REF','EEG O1-REF','EEG O2-REF', 'EEG F7-REF','EEG F8-REF','EEG T3-REF','EEG T4-REF','EEG T5-REF', 'EEG T6-REF','EEG A1-REF','EEG A2-REF','EEG FZ-REF','EEG CZ-REF','EEG PZ-REF' ] # 读取EDF文件 raw = mne.io.read_raw_edf('aaaaaibz_s001_t000.edf', preload=True) # 按固定顺序选择通道(pick_channels会严格遵循传入列表的顺序返回数据) edf = raw.pick_channels(FIXED_CHANNELS) # 获取通道数据并转置(时间点为行,通道为列) data = edf.get_data() transposed_data = np.transpose(data) # 创建DataFrame时指定列名为通道名称,Excel首行自动保留这些名称 df = pd.DataFrame(transposed_data, columns=FIXED_CHANNELS) # 保存到Excel(index=False去掉默认行号列,输出更整洁) df.to_excel('ne1-ibz.xlsx', index=False)
关键修改说明:
- 固定通道顺序:提前定义
FIXED_CHANNELS常量,所有EDF文件都将按该列表顺序提取通道数据,彻底解决不同文件通道顺序不一致的问题。mne的pick_channels方法会严格遵循传入列表的顺序返回通道,不受原文件通道顺序影响。 - 保留通道名称:创建
pd.DataFrame时通过columns参数指定列名为通道名称,保存Excel时默认将列名作为首行输出。 - 额外添加
index=False参数,避免生成不必要的行号列,让输出更干净。
若部分EDF文件可能缺失目标通道,可添加容错处理(如跳过缺失通道的文件或填充NaN值),假设你的数据集所有文件均包含这21个通道,上述代码可直接使用。
内容的提问来源于stack exchange,提问作者Prajakta Rathod
相关产品推荐
相关产品推荐

