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
Vous devez vous connecter pour publier un commentaire.
Il semble que vous voulez de groupe par le
Year
, alors le rang de laReturns
dans l'ordre décroissant.rendements
À l'adresse de l'OP révisée de la question: Le message d'erreur
se produit lorsque vous essayez de
groupby/rank
sur un DataFrame avec des valeurs en double dans l'index. Vous pouvez éviter ce problème en construisants
d'avoir des valeurs d'index unique après l'ajout:rendements
Si vous avez déjà ajouté de nouvelles lignes à l'aide de
ensuite utiliser
reset_index
pour créer un index unique:La question que je vais avoir est avec le code supplémentaire (ne pense pas que ce serait pertinent avant):
OriginalL'auteur unutbu