Я добавил некоторые значения в ваш фрейм данных, чтобы получать те же часы, минуты и se c для записей со значением = 0.100
df = pd.DataFrame({'data':['16:23:21.323 19.5','16:23:21.423 20.0','04:27:04.550 19.5',
'04:27:11.670 19.5','06:12:24.523 19.0','06:12:24.623 18.5',
'16:23:21.323 19.5','06:12:24.523 19.0'],
'timestamp':['2012-03-21','2012-03-21','2012-03-22','2012-03-22','2012-03-23','2012-03-23',
'2012-03-23','2012-03-23'],
'timediff':[28732.920,0.100,43423.127,7.120,0.100,0.100,92712.853,0.100]})
df['h_m_s'] = df['data'].str.extract(r'(.*) ')
data timediff timestamp h_m_s
0 16:23:21.323 19.5 28732.920 2012-03-21 16:23:21.323
1 16:23:21.423 20.0 0.100 2012-03-21 16:23:21.423
2 04:27:04.550 19.5 43423.127 2012-03-22 04:27:04.550
3 04:27:11.670 19.5 7.120 2012-03-22 04:27:11.670
4 06:12:24.523 19.0 0.100 2012-03-23 06:12:24.523
5 06:12:24.623 18.5 0.100 2012-03-23 06:12:24.623
6 16:23:21.323 19.5 92712.853 2012-03-23 16:23:21.323
7 06:12:24.523 19.0 0.100 2012-03-23 06:12:24.523
df_same = df[(df.timediff==0.100)]
df = df[~(df.timediff==0.100)]
df_same = df_same.drop_duplicates(subset=['h_m_s'],keep='first')
df=pd.concat([df,df_same])
print(df)
data timediff timestamp h_m_s
0 16:23:21.323 19.5 28732.920 2012-03-21 16:23:21.323
2 04:27:04.550 19.5 43423.127 2012-03-22 04:27:04.550
3 04:27:11.670 19.5 7.120 2012-03-22 04:27:11.670
6 16:23:21.323 19.5 92712.853 2012-03-23 16:23:21.323
1 16:23:21.423 20.0 0.100 2012-03-21 16:23:21.423
4 06:12:24.523 19.0 0.100 2012-03-23 06:12:24.523
5 06:12:24.623 18.5 0.100 2012-03-23 06:12:24.623