Python中pandas按两列分组计算均值结果与预期不符如何解决
你当前代码输出为长格式的分组聚合结果,要得到行是member_casual、列是星期维度、值为Difference均值的宽表,可参考以下两种修改方式:
方案1:基于现有逻辑调整
在原有分组聚合后调用unstack()方法,将Week_day从行索引转为列名即可:
grp_df2 = clean_df.filter(['member_casual','Difference','Week_day']) result = grp_df2.groupby(['member_casual','Week_day']).Difference.mean().unstack().reset_index()
如果需要固定星期列的显示顺序,可额外补充列重排逻辑:
# 可根据实际需要调整星期顺序 week_order = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'] result = result[['member_casual'] + week_order]
方案2:用透视表一步生成
用pandas透视表方法可以直接输出目标结构,逻辑更清晰:
import pandas as pd result = pd.pivot_table( clean_df, index='member_casual', columns='Week_day', values='Difference', aggfunc='mean' ).reset_index()
内容的提问来源于stack exchange,提问作者Mohamed Ashraf
相关产品推荐
相关产品推荐

