здесь делаем математику + GroupBy.agg
s=df['data']+df['meta_data']
groups=s.ne(s.shift()).cumsum()
new_df=( df.groupby(groups)
.agg({'word':' '.join,'start':'min',
'stop':'max','data':'first',
'meta_data':'first'}) )
print(new_df)
word start stop data meta_data
1 but that's 2.72 3.09 2 9
2 alright 3.09 3.47 2 1
3 we'll have to 8.43 9.07 1 4
4 okay 9.19 10.01 2 2
5 sure 10.02 11.01 2 1
6 what? 11.02 12.00 1 4
, если вы думаете, что сумма может соответствовать в двух разных и последовательных группах, которые выможет использовать несколько более сложную функцию с десятичными числами
p=(df['data']+0.1723).pow(df['meta_data']+2.017)
groups=p.ne(p.shift()).cumsum()