2

次の値を持つデータセットがあります。

var1  var2 
1234  abc
2345  bcs
5678  csd
1234  abc
1234  bcs
5678  csd
1234  bcs
1234  xyz
1234  abc
9101  zzz

列 var1 のすべての一意の値をカウントして、var2 の対応する値の上位 3 つの頻度カウントを表示し、出力を取得する必要があります。次に例を示します。

var1  var2  count
1234  abc   3
1234  bcs   2
1234  xyz   1
5678  csd   2
9101  zzz   1

それを行う最も効率的な方法は何ですか?

4

3 に答える 3

2

含める必要がありますnlargest

df.groupby('var1').var2.apply(lambda x: x.value_counts().nlargest(3)) \
    .reset_index(name='count').rename(columns={'level_1': 'var2'})

   var1 var2  count
0  1234  abc      3
1  1234  bcs      2
2  1234  xyz      1
3  2345  bcs      1
4  5678  csd      2
5  9101  zzz      1
于 2017-03-20T07:19:26.780 に答える