如何根据DataFrame的area分组新增prod_a与prod_b的对应分组均值列
解决方案
你可以直接使用pandas的groupby+transform实现需求,该方法会保留原数据的索引,将分组计算结果直接匹配到对应行,无需额外拼接操作:
# 按area分组,直接在原df上新增两列存储分组均值 df[['mean prod_a for the area', 'mean prod_b for the area']] = df.groupby('area')[['prod_a', 'prod_b']].transform('mean')
如果更偏好显式拼接的逻辑,也可以先计算分组均值表再合并:
# 第一步:计算每个area对应的prod_a、prod_b均值 area_mean_df = df.groupby('area')[['prod_a', 'prod_b']].mean()\ .rename(columns={'prod_a': 'mean prod_a for the area', 'prod_b': 'mean prod_b for the area'})\ .reset_index() # 第二步:将均值表合并回原表 df = df.merge(area_mean_df, on='area', how='left')
两种方法输出的结果和你给出的预期效果完全一致。
内容的提问来源于stack exchange,提问作者Ignacio Peralta
相关产品推荐
相关产品推荐

