2017-10-20 7 views
1

Je tente de créer une colonne qui prend la moyenne des valeurs d'une autre colonne en fonction d'une valeur dans une autre colonne.Création d'une colonne dans une base de données conditionnelle à d'autres colonnes

pd.DataFrame({"A":[1, 2, 1, 2], 
     "B":[4, 6, 8, 12] 

Je veux créer une nouvelle colonne « C » qui serait

pd.DataFrame({"A":[1, 2, 1, 2, 3], 
     "B":[4, 6, 8, 12, 4], 
     "C":[6,9,6,9,4]} 

Si on ne sait pas, je veux sortir la moyenne des valeurs dans la colonne B lorsque les valeurs de la colonne A sont les mêmes. Donc, C = (4 + 6 + ...)/n où A == 1 et C = (6 + 8 + ...)/n où A == 2, etc ...

Je suis avoir du mal à trouver le pseudo code pour ça aussi. Toute explication logique en plus d'une solution de code serait appréciée.

+0

Qu'est-ce que n? – kbball

Répondre

1

C'est une transform:

In [11]: df 
Out[11]: 
    A B 
0 1 4 
1 2 6 
2 1 8 
3 2 12 
4 3 4 

In [12]: df.groupby("A")["B"].transform('mean') 
Out[12]: 
0 6 
1 9 
2 6 
3 9 
4 4 
Name: B, dtype: int64 

In [13]: df["C"] = df.groupby("A")["B"].transform('mean') 

Voir aussi dans la group by docs. Je suis désolé de ne pas suivre la logique.