les pandas de groupe par année, rang par la vente de la colonne, dans un dataframe avec les données en double

Je voudrais créer un classement sur l'année (ainsi, en l'an 2012, le Gestionnaire de B est 1. En 2011, le Gestionnaire de B est 1 nouveau). J'ai eu du mal avec les pandas grade de la fonction pour un certain temps et NE veulent PAS recourir à une boucle for.

s = pd.DataFrame([['2012','A',3],['2012','B',8],['2011','A',20],['2011','B',30]], columns=['Year','Manager','Return'])

Out[1]:     
   Year Manager  Return    
0  2012       A       3    
1  2012       B       8    
2  2011       A      20    
3  2011       B      30

La question que je vais avoir est avec le code supplémentaire (ne pensais pas que ce serait pertinent avant):

s = pd.DataFrame([['2012', 'A', 3], ['2012', 'B', 8], ['2011', 'A', 20], ['2011', 'B', 30]], columns=['Year', 'Manager', 'Return'])
b = pd.DataFrame([['2012', 'A', 3], ['2012', 'B', 8], ['2011', 'A', 20], ['2011', 'B', 30]], columns=['Year', 'Manager', 'Return'])

s = s.append(b)
s['Rank'] = s.groupby(['Year'])['Return'].rank(ascending=False)

raise Exception('Reindexing only valid with uniquely valued Index '
Exception: Reindexing only valid with uniquely valued Index objects

Des idées?
C'est la vraie structure de données que j'utilise.
Eu du mal à ré-indexation..

Pourquoi diable avez-vous s= s.append(b), en ajoutant un duplicata avec les mêmes indices? Qui crée le problème. (et append(..., ignore_index=False) fixe, comme @unutbu dit). Mais ce qui était le besoin de dupliquer le dataframe lignes?

OriginalL'auteur Ben | 2013-07-11