df.groupby(['mac_address', 'City']).size().reset_index().rename(columns={
    'City': 'name', (0): 'count'}).groupby('mac_address').apply(lambda x: {
    'mac_address': x.name, 'cities': x[['name', 'count']].to_dict('r')}
    ).to_dict()
Python: обновить Dict, используя данные из кадра данных pandas