2017-10-20 3 views
1

Ich versuche, eine neue Spalte zu erstellen, die den Mittelwert von Werten in einer anderen Spalte von einem Wert in einer anderen Spalte abhängig macht.Erstellen einer Spalte in einem Dataframe konditional für andere Spalten

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

Ich möchte eine neue Spalte ‚C‘ erzeugen, die

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

wäre, wenn es nicht klar ist, ich möchte den Mittelwert der Werte in Spalte B ausgegeben wird, wenn die Werte in Spalte A sind gleich. Also, C = (4 + 6 + ...)/n wo A == 1 und C = (6 + 8 + ...)/n wo A == 2, etc ...

Ich bin Probleme dabei haben, auch den Pseudocode auszudenken. Jede logische Erklärung zusätzlich zu einer Codelösung würde geschätzt werden.

+0

Es tut mir leid, ich folge nicht der Logik. Was ist n? – kbball

Antwort

1

Das ist ein 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') 

Siehe auch im group by docs.

Verwandte Themen