我有以下数据帧,其中一列表示对话中每一秒说话者的 ID (0,1),另一列表示该对话中经过的秒数。
myDF = pd.DataFrame({'ID': [0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1], 'seconds': (np.arange(16))})
-------------------------------
ID Seconds
-------------------------------
0 0
0 1
0 2
0 3
1 4
1 5
1 6
1 7
0 8
0 9
0 10
0 11
1 12
1 13
1 14
1 15
-------------------------------
我只对说话者 ID 1 感兴趣,希望可以清楚地看出说话者 1 语音的边界在第 4-7 秒和第 12-15 秒之间。我想要生成的是一个单独的数据帧,其中包含每个说话者 1 个语音段的开始和结束,其中每一行都是一个不间断的语音周期。像这样的东西:
--------------------------------
start end
--------------------------------
4 7
12 15
--------------------------------
我有一些不起作用的伪代码,希望概述我想要实现的目标,但到目前为止我还找不到正确的解决方案。本质上,对于每一行,我将 ID 值与前一行进行比较(因为 ID 的更改表示语音的开始),并将相应的秒值添加到 bdry 数据帧中。同样,我随后将每个 ID 值与下一行进行比较(因为这将表示语音结束)。
bdry = pd.DataFrame(columns=['start','end'])
for i in myDF:
if i['ID'] == 1:
if i.ID != i['ID'].shift(): # compare ID with previous
bdry['start'].append(i['seconds'])
if i.ID != i['ID'].shift(-1): # compare ID with next
bdry['end'].append(i['seconds'])
慕桂英546537
守着一只汪
相关分类