我有一个数据框df
:
<表类>
城市
领土地区 区域销售 tbody><<tr>奇科皮 马斯普林菲尔德道明> 国家 58761 奇科皮 马斯普林菲尔德道明> 国家 65204 奇科皮 马斯普林菲尔德道明> 国家 79862 喂养山 斯普林菲尔德MA 东北 国家 67247 霍利约克 马斯普林菲尔德道明> 国家 64347 霍利约克 马斯普林菲尔德道明> 国家 73473 北安普敦 马斯普林菲尔德道明> 国家 43349 南哈德利 斯普林菲尔德MA 东北 国家 43551 南哈德利 斯普林菲尔德MA 东北 国家 73633 斯普林菲尔德马斯普林菲尔德道明> 国家 64025 斯普林菲尔德马斯普林菲尔德道明> 国家 56670 斯普林菲尔德马斯普林菲尔德道明> 国家 79424 斯普林菲尔德马斯普林菲尔德道明> 国家 39118 斯普林菲尔德马斯普林菲尔德道明> 国家 74262 Leominster 伍斯特马 东北 国家 39348 Lunenburg 伍斯特马 东北 国家 33119 位于 伍斯特马 东北 国家 54086 伍斯特伍斯特马 东北 国家 79859 伍斯特伍斯特马 东北 国家 40721 弗雷明汉 伍斯特马 东北 国家 79197 弗雷明汉 伍斯特马 东北 国家 36837 弗雷明汉 伍斯特马 东北 国家 66552 弗雷明汉 伍斯特马 东北 国家 66355 康科德 伍斯特马 东北 国家 78933 Holliston 伍斯特马 东北 国家 37515 哈德森伍斯特马 东北 国家 49778 表类>
try this:
avg_sale = df.groupby('Region').agg(avg_sale_region=('Sales', np.mean))
df.merge(avg_sale, on='Region')
这是针对区域的,您可以对其他列执行相同的操作,例如city,…
for col in columns_you_want: #columns_you_want=['City', 'Region', ...]
avg_sale = df.groupby(col).agg(**{'avg_sale_by_'+col: ('Sales', np.mean)})
df = df.merge(avg_sale, on=col)
之后可以重命名列:
df = df.drop(columns=columns_you_want)
df = df.rename(columns={'avg_sale_by_'+col: col for col in columns_you_want})