如何使用Pandas动态构建DataFrame 批量导出多份数据到Excel
动态生成DataFrame适配批量音频数据导出的实现方案
核心逻辑:无需逐个定义存储结果的变量,将所有待处理音频路径统一归集为列表,批量遍历处理后直接生成DataFrame即可,支持任意数量的音频文件处理,无需修改DataFrame构造逻辑。
场景1:音频文件名有固定规律(如sound1.wav、sound2.wav依次递增)
直接按规则生成文件名列表即可,调整audio_count的数值即可适配任意数量的音频:
import pandas as pd # 定义需要处理的音频总数量,可随意修改 audio_count = 20 audio_files = [f'sound{i}.wav' for i in range(1, audio_count + 1)] # 批量处理所有音频,收集返回结果 result_list = [sigInput(file) for file in audio_files] # 直接生成DataFrame并添加label列 df = pd.DataFrame(result_list, columns=['mean', 'total', 'power']) df['label'] = [f'data{i}' for i in range(1, audio_count + 1)] # 导出Excel,index=False避免导出多余的索引列 df.to_excel('expData.xlsx', index=False)
场景2:音频文件名无规律,或需要自动扫描整个目录的音频
用glob模块自动扫描指定目录下的所有wav文件,不用手动统计数量、编写文件名:
import pandas as pd import glob # 自动扫描当前目录下所有后缀为.wav的音频文件,也可修改路径规则匹配其他位置/格式的文件 audio_files = glob.glob('*.wav') result_list = [sigInput(file) for file in audio_files] df = pd.DataFrame(result_list, columns=['mean', 'total', 'power']) # 如果需要label使用原始音频文件名,可改为 df['label'] = audio_files df['label'] = [f'data{i}' for i in range(1, len(audio_files) + 1)] df.to_excel('expData.xlsx', index=False)
可选调整说明
- 如果需要保留原始音频文件名作为标记,直接将label列赋值为
audio_files即可,不用生成data1、data2的编号,更方便对应原始文件 - 若sigInput返回的结果格式有调整,仅需要修改
pd.DataFrame的columns参数即可,批量处理逻辑不用改动
内容的提问来源于stack exchange,提问作者Ngr Wisnu
相关产品推荐
相关产品推荐

