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

如何将MNE Info对象转换为Pandas DataFrame?

将MNE的Info对象转换为Pandas DataFrame的方法

MNE的Info对象包含了EEG数据的元信息(通道详情、采样率、测量参数等),要把它转成Pandas DataFrame用于Streamlit可视化,核心是提取对象里的结构化数据字段,以下是具体实现方法:

1. 提取核心通道信息

Info对象的chs属性是一个字典列表,每个字典对应一个通道的详细参数,直接将其转换为DataFrame即可:

import mne
import pandas as pd
import streamlit as st

# 加载EDF文件并获取Info对象
raw = mne.io.read_raw_edf("your_eeg_data.edf", preload=True)
info = raw.info

# 直接转换通道列表为DataFrame
chs_df = pd.DataFrame(info["chs"])

2. 简化DataFrame(适配Streamlit展示)

原始的chs字段包含很多嵌套数据(比如数组、元组类型的loc、cal字段),如果只需要常用信息,可以提取关键字段生成简化版DataFrame:

# 提取通道名称、类型、单位等核心字段
simplified_chs_df = pd.DataFrame({
    "通道名称": [ch["ch_name"] for ch in info["chs"]],
    "通道类型": [mne.io.constants.FIFF.FIFFV_CH_NAMES.get(ch["kind"], "未知") for ch in info["chs"]],
    "单位": [ch["unit"] for ch in info["chs"]],
    "采样率(Hz)": [info["sfreq"]] * len(info["chs"])
})

# 在Streamlit中展示表格
st.subheader("EEG通道核心信息")
st.dataframe(simplified_chs_df, use_container_width=True)

3. 提取全局测量信息

如果需要展示采样率、通道总数、测量日期等全局信息,可以单独提取生成DataFrame:

global_info = {
    "测量日期": [info["meas_date"]],
    "采样率(Hz)": [info["sfreq"]],
    "通道总数": [info["nchan"]],
    "标记的坏通道": [", ".join(info["bads"]) if info["bads"] else "无"]
}

global_info_df = pd.DataFrame(global_info)

# 在Streamlit中展示
st.subheader("全局测量参数")
st.dataframe(global_info_df, use_container_width=True)

注意事项

  • 如果需要Info对象中的其他字段(比如dev_head_t设备头变换、subject_info受试者信息),可以参照上述方式提取对应字段转换为DataFrame。
  • 嵌套类型的字段(如字典、数组)可以根据需求进一步拆解,比如将subject_info中的姓名、年龄单独提取为列。

内容的提问来源于stack exchange,提问作者mnsosa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 05:15:33