2017-07-04 5 views
2

Supposons que je trame de données de pandas géants avec 2 colonnes:valeurs uniques de deux colonnes pour pandas géants dataframe

df: Col1 Col2 
     1  1 
     1  2 
     1  2 
     1  2 
     3  4 
     3  4 

Je veux garder que les valeurs couple uniques (col1, col2) de ces deux colonnes et donner leur frequncy:

df2: Col1 Col2 Freq 
     1  1  1 
     1  2  3 
     3  4  2 

Je pense à utiliser df['Col1', 'Col2'].value_counts() mais il ne fonctionne que pour une seule colonne. Existe-t-il une fonction pour gérer plusieurs colonnes?

+2

'df.groupby (['Col1', 'Col2']). Size()'? – Zero

Répondre

6

besoin groupby + size + reset_index:

df = df.groupby(['Col1', 'Col2']).size().reset_index(name='Freq') 
print (df) 
    Col1 Col2 Freq 
0  1  1  1 
1  1  2  3 
2  3  4  2 
1

Vous pouvez essayer

df.groupby(['Col1', 'Col2']).size() 

pour une sortie visuelle différente par rapport à la réponse de Jez, vous pouvez étendre cette soltuion avec

pd.DataFrame(df.groupby(['Col1', 'Col2']).size().rename('Freq')) 

donne

  Freq 
Col1 Col2  
1 1  1 
    2  3 
3 4  2