Попробуйте что-то вроде этого -
dates = [20200109, 20200109, 20200109, 20200109, 20200109, 20200109, 20200109, 20200109, 20200109, 20200109, 20200109, 20200110]
times = [1925, 1925, 1925, 1925, 1925, 1925, 1830, 1830, 1830, 1830, 1830, 1930]
df = pd.DataFrame({'dates':dates, 'times':times})
filt = df.groupby(['dates'])['times'].max().to_frame().reset_index()
final = pd.merge(df,filt,on=['dates','times'])
final
dates times
0 20200109 1925
1 20200109 1925
2 20200109 1925
3 20200109 1925
4 20200109 1925
5 20200109 1925
6 20200110 1930
Я думаю, даже если вы добавите больше столбцов в df
, final
будет иметь дополнительные столбцы, как вы пожелаете.