You can use month periods for Series.dt.to_period for groups by months:
Series.dt.to_period
months = df['opened_at'].dt.to_period('m') for month, g in df.groupby(months): print (g)
2.1m questions
2.1m answers
60 comments
57.0k users