2017-10-20 14 views
1

別の列の値の平均を別の列の値を条件とする新しい列を作成しようとしています。他の列の条件付きデータフレームに列を作成

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

私はそれが明確でない場合は

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

になり、新しい列「C」を作成したいが、私は出力に列Bの値の平均をしたい時に列の値Aは同じです。したがって、A == 1、C =(6 + 8 + ...)/ nここでA == 2など...

私は午前このために擬似コードを考え出すのは問題があります。コードソリューションに加えて論理的な説明があれば歓迎されます。 transform

+0

申し訳ありませんが論理に従わないです。 nとは何ですか? – kbball

答えて

1

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でも参照してください。