grouped_a = a.groupby('id').agg({'my_date': 'nunique', 'num': 'nunique'}
    ).reset_index()
grouped_a.columns = ['id', 'num_unique_num', 'num_unique_my_date']
print(grouped_a)
Pandas: counting unique datetime values in group by gives weird values