2017-10-20 77 views
1

我正在嘗試創建一個新列,其中另一列中的值的平均值取決於另一列中的值。在其他列上有條件的數據框中創建列

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

我想創建一個新的列「C」,這將是

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

如果它是不明確的,我要輸出的值的列B中的意思是當在列中的值A是一樣的。所以,C =(4 + 6 + ...)/ n其中A == 1和C =(6 + 8 + ...)/ n其中A == 2等等......

我是無法爲此考慮僞代碼。除了代碼解決方案,任何合理的解釋將不勝感激。

+0

對不起,我不遵循邏輯。什麼是n? – kbball

回答

1

這是一個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') 

也看到group by docs

相關問題