Сгруппируйте все столбцы, создав уникальные строки, затем определите размер каждой группы, а затем сбросьте индекс, чтобы получить фрейм данных.
>>> df.groupby(['grid_id', 'date_str']).size().reset_index(name='count')
grid_id date_str count
0 172460 2019-07-19 1
1 173159 2019-07-19 2
2 173159 2019-07-20 1
3 173860 2019-07-19 1
4 173861 2019-07-19 1