Панды получают подсчет пары элементов в двух столбцах

print(d.groupby(['ip', 'useragent']).size().reset_index().rename(columns={0:''}))
Horrible Hoopoe