Conjunto acumulativo en PANDAS

Tengo un dataframe de tweets y busco agrupar el dataframe por fecha y generar una columna que contenga una lista acumulativa de todos los usuarios únicos que han publicado hasta esa fecha. Ninguna de las funciones existentes (p. Ej., Cumsum) parece funcionar para esto. Aquí hay una muestra del dataframe original del tweet, donde el índice (created_at) está en formato de fecha y hora:

In [3]: df Out[3]: screen_name created_at 04-01-16 Bob 04-01-16 Bob 04-01-16 Sally 04-01-16 Sally 04-02-16 Bob 04-02-16 Miguel 04-02-16 Tim 

Puedo contraer el conjunto de datos por fecha y obtener una columna con los usuarios únicos por día:

 In [4]: df[['screen_name']].groupby(df.index.date).aggregate(lambda x: set(list(x))) Out[4]: from_user_screen_name 2016-04-02 {Bob, Sally} 2016-04-03 {Bob, Miguel, Tim} 

Hasta ahora tan bueno. Pero lo que me gustaría es tener un “conjunto acumulativo” como este:

 Out[4]: Cumulative_list_up_to_this_date Cumulative_number_of_unique_users 2016-04-02 {Bob, Sally} 2 2016-04-03 {Bob, Sally, Miguel, Tim} 4 

En última instancia, lo que realmente me interesa es el número acumulativo en la última columna para poder trazarlo. He considerado repasar las fechas y otras cosas, pero parece que no puedo encontrar una buena manera. Gracias de antemano por cualquier ayuda.

No puede agregar conjuntos, pero puede agregar listas! Así que construya una lista de usuarios, luego tome la sum acumulativa y finalmente aplique el constructor del conjunto para deshacerse de los duplicados.

 cum_names = (df['screen_name'].groupby(df.index.date) .agg(lambda x: list(x)) .cumsum() .apply(set)) # 2016-04-01 {Bob, Sally} # 2016-04-02 {Bob, Miguel, Tim, Sally} # dtype: object cum_count = cum_names.apply(len) # 2016-04-01 2 # 2016-04-02 4 # dtype: int64