Python pandas dataframe:按多个列分组,应用函数并映射回结果

Python pandas dataframe:按多个列分组,应用函数并映射回结果,python,pandas,Python,Pandas,这里有一个例子: np.random.seed(1) df=pd.DataFrame({“x”:np.random.random(大小=10), “y”:np.arange(10)}) df[“z”]=np.式中(df.x

这里有一个例子:

np.random.seed(1)
df=pd.DataFrame({“x”:np.random.random(大小=10),
“y”:np.arange(10)})
df[“z”]=np.式中(df.x<0.5,0,1)
打印df
它给出了以下结果:

          x  y  z
0  0.417022  0  0
1  0.720324  1  1
2  0.000114  2  0
3  0.302333  3  0
4  0.146756  4  0
5  0.092339  5  0
6  0.186260  6  0
7  0.345561  7  0
8  0.396767  8  0
9  0.538817  9  1
我想在
df
中添加一个新列
mean
,其中计算的
x
列的平均值按
y
z
列分组。我已经知道如何计算平均值:

tmp = df.groupby(["y", "z"]).mean()

但是,我无法找到如何将结果映射回一个新列
mean

使用
transform
groupby
操作的结果添加回一列,
transform
返回一个
序列,其索引与原始df对齐:

In [15]:
df['mean'] = df.groupby(["y", "z"]).transform('mean')
df

Out[15]:
          x  y  z      mean
0  0.423578  0  0  0.423578
1  0.270675  1  0  0.270675
2  0.707611  2  1  0.707611
3  0.589192  3  1  0.589192
4  0.768653  4  1  0.768653
5  0.420577  5  0  0.420577
6  0.930490  6  1  0.930490
7  0.380576  7  0  0.380576
8  0.055940  8  0  0.055940
9  0.678355  9  1  0.678355