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?
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
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