Python 熊猫分组,并在每个组以1开头的组中排名

Python 熊猫分组,并在每个组以1开头的组中排名,python,pandas,group-by,size,rank,Python,Pandas,Group By,Size,Rank,我有一个数据帧: 作为pd进口熊猫 df = pd.DataFrame([[1, 'a'], [1, 'a'], [1, 'b'], [1, 'a'], [2, 'a'], [2, 'b'], [2, 'a'], [2,

我有一个数据帧:

作为pd进口熊猫

df = pd.DataFrame([[1, 'a'],
                    [1, 'a'],
                    [1, 'b'],
                    [1, 'a'],
                    [2, 'a'],
                    [2, 'b'],
                    [2, 'a'],
                    [2, 'b'],
                    [3, 'b'],
                    [3, 'a'],
                    [3, 'b'],

                   ], columns=['session', 'issue'])
df

我想在会议中对问题进行排名。 我试过:

df.groupby(['session', 'issue']).size().rank(ascending=False, method='dense')

session  issue
1        a        1.0
         b        3.0
2        a        2.0
         b        2.0
3        a        3.0
         b        2.0
dtype: float64
我需要的是这样的结果:

  • 对于组会话=1,有三个a问题和一个b问题,因此 对于第1组,等级为a=1和b=2
  • 对于组会话=2,两个级别相等,因此它们的级别应相同=1
  • 对于组会话=3,有到b个问题和一个a问题,因此等级应为b=1和a=2
  • 无论如何,为什么每个组的排名不从1、2、3开始?

    多索引的第一级使用(
    会话
    ):


    这是一个解决办法。非常感谢。@user3225309-不客气!如果我的回答有帮助,别忘了。谢谢
    s = (df.groupby(['session', 'issue'])
            .size()
            .groupby(level=0)
            .rank(ascending=False, method='dense'))
    print (s)
    session  issue
    1        a        1.0
             b        2.0
    2        a        1.0
             b        1.0
    3        a        2.0
             b        1.0
    dtype: float64