Os pandas recebem contagem de pares de elementos em duas colunas
print(d.groupby(['ip', 'useragent']).size().reset_index().rename(columns={0:''}))
Horrible Hoopoe
print(d.groupby(['ip', 'useragent']).size().reset_index().rename(columns={0:''}))