如何从 numpy 数组中获取值到 pandas 数据帧

How to get value from numpy array into pandas dataframe

我正在 trim使用 librosa 制作一些音频文件。这工作正常,但我不想保存 trimmed 文件,而是想获得 trimming 之前和 trimming 之后的长度。我现在拥有的代码可以打印我需要的所有信息,我只需要将其放入 pandas 数据框中,其中 column1 = 文件名,column2 = [=21= 之前的长度],column3 = [=21 之后的长度=].我不需要 'sr'。我似乎无法弄清楚如何正确地做到这一点...感谢帮助。

代码如下:

for file in files:
    print(file)
    audio, sr = librosa.load(file, sr= 16000, mono=True)
    print(audio.shape, sr)
    trimmed = librosa.effects.trim(audio, top_db= 45)
    print(trimmed[0].shape, sr)
    

这是我使用 print 命令得到的输出:

/Desktop/py_scripts/audio_experiments/wav/1031_8637_73170.wav
(39680,) 16000
(38144,) 16000
/Desktop/py_scripts/audio_experiments/wav/1060_8777_76783.wav
(28160,) 16000
(28160,) 16000
/Desktop/py_scripts/audio_experiments/wav/1128_8634_82873.wav
(74240,) 16000
(74240,) 16000

您应该将数据收集到列表或字典中,然后使用它来构建数据框

import pandas as pd

file_lst, len_before_lst, len_after_lst = [], [], []
for file in files:
    file_lst.append(file)
    audio, sr = librosa.load(file, sr= 16000, mono=True)
    len_before_lst.append(audio.shape[0])
    trimmed = librosa.effects.trim(audio, top_db= 45)
    len_after_lst.append(trimmed[0].shape)

df = pd.DataFrame([file_lst, len_before_lst, len_after_lst], index=['filename', 'len_before', 'len_after']).T