¿Cómo dar nombres de columna después de contar y unir?

Tengo el siguiente dataframe

import pandas as pd compnaies = ['Microsoft', 'Google', 'Amazon', 'Microsoft', 'Facebook', 'Google','Google'] products = ['OS', 'Search', 'E-comm', 'X-box', 'Social Media', 'Android','Search'] df = pd.DataFrame({'company' : compnaies, 'product':products }) 

Yo hago la siguiente operación:

  df.groupby('company').product.agg([('count', 'count'), ('product', ', '.join)]) count product company Amazon 1 E-comm Facebook 1 Social Media Google 3 Search, Android, Search Microsoft 2 OS, X-box 

Cómo asignar un nombre a las columnas después del código anterior en lugar de conteo y producto:

Rendimiento esperado:

 company Number Product List. Amazon 1 E-comm Facebook 1 Social Media Google 3 Search, Android, Search Microsoft 2 OS, X-box 

Salida esperada 2:

Rendimiento esperado:

  company Number Product List. uniquecount uniquevalues Amazon 1 E-comm 1 E-comm Facebook 1 Social Media 2 Social Media Google 3 Search, Android, Search 2 Search, Android, Microsoft 2 OS, X-box, Search 3 OS, X-box,Search 

 import pandas as pd def remove_dup(string): temp=string.split(',') temp=[x.strip() for x in temp] return ','.join(set(temp)) compnaies = ['Microsoft', 'Google', 'Amazon', 'Microsoft', 'Facebook', 'Google','Google'] products = ['OS', 'Search', 'E-comm', 'X-box', 'Social Media', 'Android','Search'] df = pd.DataFrame({'company' : compnaies, 'product':products }) new_df=df.groupby('company').product.agg([('Number', 'count'), ('Product list', ', '.join)]).reset_index() #create uniquevalues new_df['uniquevalues']=new_df['Product list'].apply(remove_dup) #create uniquecount new_df['uniquecount']=new_df['uniquevalues'].str.split(',').str.len() 

Aquí está la respuesta estándar:

 df.groupby('company').product.agg([('count', 'count'), ('product', ', '.join)]).rename(columns={"count":"number","product":"product lists"}) 

Pandas ayuda online