web-dev-qa-db-fra.com

Valeurs uniques de deux colonnes pour pandas dataframe

Supposons que j'ai pandas trame de données avec 2 colonnes:

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

Ensuite, je veux conserver uniquement les valeurs de couple uniques (col1, col2) de ces deux colonnes et donner leur fréquence:

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

Je pense utiliser df['Col1', 'Col2'].value_counts() mais cela ne fonctionne que pour une colonne. Existe-t-il une fonction pour traiter de nombreuses colonnes?

12
curious_one

Vous avez besoin de groupby + size + Series.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
22
jezrael

Tu pourrais essayer

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

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

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

donne

           Freq
Col1 Col2      
1    1        1
     2        3
3    4        2
3
Quickbeam2k1