如何将包含文件名与通道集合的数组转换为指定格式DataFrame
具体实现方法
我们可以借助pandas库完成转换,核心逻辑是先把交替存储的文件名、通道集合拆分整理,再合并为目标结构的DataFrame,步骤如下:
- 第一步:拆分原始数组,提取文件名和对应的通道集合映射关系
- 第二步:对每个文件名做截断处理,仅保留去掉路径和扩展名的部分作为列名
- 第三步:将每个通道集合转换为单列Series,统一拼接后将缺失值替换为空字符串即可
完整实现代码如下:
import os import pandas as pd # 原始输入数组 raw_data = ['preprocessed\\AB_30624_badchannels.set', {'E88', 'E91', 'E248', 'E139', 'E245', 'E216', 'E111'}, 'preprocessed\\ACM_98630_badchannels.set', {'E88', 'E186', 'E91', 'E139', 'E102', 'E216', 'E111', 'E238'}, 'preprocessed\\AL_96705_badchannels.set', {'E88', 'E37', 'E91'}] # 按成对拆分,整理为(文件名,通道集合)的结构 file_channel_pairs = [(raw_data[i], raw_data[i+1]) for i in range(0, len(raw_data), 2)] # 生成每个列对应的Series series_list = [] for file_path, channels in file_channel_pairs: # 处理文件名:提取无路径、无扩展名的部分作为列名 col_name = os.path.splitext(os.path.basename(file_path))[0] # 通道集合转Series,加sorted可以保证通道按字符顺序排列,不需要可直接去掉sorted s = pd.Series(sorted(list(channels)), name=col_name) series_list.append(s) # 合并所有Series,缺失值替换为空字符串 result_df = pd.concat(series_list, axis=1).fillna('') # 如果需要输出为示例里的竖线分隔格式,可执行下面的代码 print(result_df.to_csv(sep='|', index=False))
内容的提问来源于stack exchange,提问作者fredooms
相关产品推荐
相关产品推荐

