Python pandas groupby rank删除索引,返回所有1

Python pandas groupby rank删除索引,返回所有1,python,pandas,Python,Pandas,我的数据框如下所示: name1 name2 value 1 Jane Foo 2 2 Jane Bar 4 3 John Foo 7 4 John Bar 1 如果我做了df.groupby(['name1','name2']).count()我得到: value name1 name2 Jane Foo 1 Jane Bar 1 John Foo 1 J

我的数据框如下所示:

    name1  name2   value
 1  Jane   Foo     2
 2  Jane   Bar     4
 3  John   Foo     7
 4  John   Bar     1
如果我做了
df.groupby(['name1','name2']).count()
我得到:

              value
name1  name2
Jane   Foo    1
Jane   Bar    1
John   Foo    1
John   Bar    1
但我试图找出每个多索引组中每个值的排名。理想情况下,如果我使用
df.groupby(['name1','name2']).rank()
我应该得到:

             value
name1  name2
Jane   Foo    2
Jane   Bar    1
John   Foo    1
John   Bar    2
但我只是得到:

    value
  1  1
  2  1
  3  1
  4  1

删除分组列的名称后,只有索引号作为索引,所有行的秩值等于1。我做错了什么?

我认为您需要使用数字-因此似乎需要将分组放在第一列
name1
中,并返回
值的

df['rank'] = df.groupby('name1')['value'].rank(method='dense', ascending=False).astype(int)
print (df)
  name1 name2  value  rank
1  Jane   Foo      2     2
2  Jane   Bar      4     1
3  John   Foo      7     1
4  John   Bar      1     2

我认为您需要使用数字-因此似乎需要将分组放在第一列
name1
,并为
值返回
rank

df['rank'] = df.groupby('name1')['value'].rank(method='dense', ascending=False).astype(int)
print (df)
  name1 name2  value  rank
1  Jane   Foo      2     2
2  Jane   Bar      4     1
3  John   Foo      7     1
4  John   Bar      1     2