Python: actualiza un Dict usando datos de un dataframe de pandas

Entonces, tengo un dataframe de pandas como este.

mac_address City 0 00:03:7f:05:c0:06 Kolkata 1 00:08:22:1c:50:07 Bhubaneswar 2 00:08:22:1c:50:07 Mumbai 3 00:08:22:1c:50:07 Mumbai 4 00:08:22:1c:50:07 Kolkata 5 00:08:22:24:cc:fb Bhubaneswar 6 00:08:22:24:f8:02 Mumbai 7 00:08:22:24:f8:02 Kolkata 8 00:08:22:24:f8:02 Mumbai 9 00:08:22:24:f8:02 Bhubaneswar 

Ahora la clave única aquí es mac_address, así que quiero comenzar con un documento JSON vacío. para eso comenzaré con un diccionario en python que luego puedo verter en JSON. No sé cómo comenzar con un dict vacío (también puede ayudar con eso), así que he comenzado con un valor. Ahora, para cada nueva fila de dataframe, si la dirección_mac que también es el índice de dictado, si hay_como mac, actualice la ciudad correspondiente y el recuento de ciudades. Y si no está allí, agregue un nuevo campo (si se llama campo) con el índice como la nueva dirección de mac y almacene el valor correspondiente. Este es el diccionario para comenzar.

 data = {"00:08:22:24:f8:02": { "mac_address" : "00:08:22:24:f8:02", "cities" : [ {'name': 'Bhubaneswar', 'count': 12}, {'name': 'Kolkata', 'count': 4}, {'name': 'Mumbai', 'count': 6} ] } } 

recuento de la ciudad es no. de veces un mac_address visitó una ciudad. Al leer esta fila en particular, me gustaría actualizar una ciudad llamada Bhubneswar y Count 1.

Actualizar La pregunta aquí es cómo actualizar un diccionario directamente desde un cuadro de datos fila por fila. Lo que de alguna manera no pude explicar. Esta actualización podría ayudar a la gente a entender.

puede construir su diccionario, que podría guardarse como el archivo JSON de esta manera:

 In [129]: %paste (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() ) ## -- End pasted text -- Out[129]: {'00:03:7f:05:c0:06': {'cities': [{'count': 1, 'name': 'Kolkata'}], 'mac_address': '00:03:7f:05:c0:06'}, '00:08:22:1c:50:07': {'cities': [{'count': 1, 'name': 'Bhubaneswar'}, {'count': 1, 'name': 'Kolkata'}, {'count': 2, 'name': 'Mumbai'}], 'mac_address': '00:08:22:1c:50:07'}, '00:08:22:24:cc:fb': {'cities': [{'count': 1, 'name': 'Bhubaneswar'}], 'mac_address': '00:08:22:24:cc:fb'}, '00:08:22:24:f8:02': {'cities': [{'count': 1, 'name': 'Bhubaneswar'}, {'count': 1, 'name': 'Kolkata'}, {'count': 2, 'name': 'Mumbai'}], 'mac_address': '00:08:22:24:f8:02'}} 

Con respecto a la actualización de los campos nesteds en Mongo DB, vea esta pregunta y las respuestas: MongoDB – Actualizar objetos en la matriz de un documento (actualización anidada)