gpt4 book ai didi

python - pandas dataframe : groupby by several columns, 应用函数并映射回结果

转载 作者:太空宇宙 更新时间:2023-11-03 16:22:16 24 4
gpt4 key购买 nike

这里有一个例子:

np.random.seed(1)
df = pd.DataFrame({"x": np.random.random(size=10),
"y": np.arange(10)})
df["z"] = np.where(df.x < 0.5, 0, 1)
print 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,其中计算按 y< 分组的 x 列的值的平均值z 列。我已经知道如何计算平均值:

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

但是我不知道如何将结果映射回新列mean

最佳答案

使用 transformgroupby 操作的结果作为列添加回来,transform 返回一个 Series它的索引与原始 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

关于python - pandas dataframe : groupby by several columns, 应用函数并映射回结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38328397/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com