Pandas DataFrame按brand和type分组求平均价格并输出透视表的方法
你可以用以下两种方法实现需求:
方法1:使用pivot_table(更直观,推荐)
pivot_table原生支持按指定行列分组聚合,一行代码就能输出目标格式:
import pandas as pd # 假设你的原始DataFrame名为df result = pd.pivot_table( df, index='brand', columns='type', values='price', aggfunc='mean', fill_value=0 # 可选参数,无对应分组的位置默认填0,不配置则默认显示NaN ) # 如果需要行索引统一加brand_前缀,添加以下代码即可 result.index = 'brand_' + result.index
示例数据运行后的输出结果如下:
type X Y Z brand brand_A 39.0 20.0 0.0 brand_B 12.4 0.0 94.15 brand_C 32.0 0.0 0.0
方法2:groupby + unstack(适配你已有的实现)
你之前用groupby得到的是二级行索引的聚合结果,只需要加一步unstack操作,就能将type转为列索引,得到目标格式:
result = df.groupby(['brand', 'type'])['price'].mean().unstack(fill_value=0) result.index = 'brand_' + result.index
两种方法得到的结果完全一致,可以根据使用习惯选择。
内容的提问来源于stack exchange,提问作者D. Brito
相关产品推荐
相关产品推荐

