在其他列上的条件数据框中创建列

时间:2017-10-20 20:47:12

标签: python dataframe

我正在尝试创建一个新列,该列以另一列中的值为条件取另一列中的值的平均值。

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]}

如果不清楚,我想在A列中的值相同时输出B列中值的平均值。所以,C =(4 + 6 + ...)/ n其中A == 1和C =(6 + 8 + ...)/ n,其中A == 2,等等......

我也无法为此考虑伪代码。除了代码解决方案之外,任何合理的解释都将受到赞赏。

1 个答案:

答案 0 :(得分: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