如何导出agg groupby函数生成的值



我有一个基于目标位置服务器的大型数据集。我使用以下代码为每个按Site分组的服务器计算一组值的平均值。

df4 = df4.merge(df4.groupby('SITE',as_index=False).agg({'DSKPERCENT':'mean'})[['SITE','DSKPERCENT']],on='SITE',how='left')

样本结果DF

Site  Server           DSKPERCENT      DSKPERCENT_MEAN
A      1                12                 11
A      2                10                 11
A      3                11                 11
B      1                9                  9
B      2                12                 9
B      3                7                  9
C      1                12                 13
C      2                12                 13
C      3                16                 13

我现在需要的是打印/导出每个站点新计算的平均值。如何打印/导出每个站点的唯一计算平均值(即站点A的计算平均值为11,站点B为9,等等(?

IIUC,您正在寻找groupby -> transform类型的操作。本质上使用transform类似于agg,不同之处在于将结果广播回原始组的相同形状。

样本数据

df = pd.DataFrame({
"groups": list("aaabbbcddddd"),
"values": [1,2,3,4,5,6,7,8,9,10,11,12]
})
df
groups  values
0       a       1
1       a       2
2       a       3
3       b       4
4       b       5
5       b       6
6       c       7
7       d       8
8       d       9
9       d      10
10      d      11
11      d      12

方法

df["group_mean"] = df.groupby("groups")["values"].transform("mean")
print(df)
groups  values  group_mean
0       a       1           2
1       a       2           2
2       a       3           2
3       b       4           5
4       b       5           5
5       b       6           5
6       c       7           7
7       d       8          10
8       d       9          10
9       d      10          10
10      d      11          10
11      d      12          10

最新更新