Pandas groupby无聚合直接导出Excel报错问题求助
报错原因说明
'DataFrameGroupBy' object has no attribute 'to_excel':groupby()执行后返回的是分组中间对象,不是标准DataFrame结构,只有DataFrame才支持to_excel()方法。你的需求不需要做聚合计算,完全不需要用到groupby,排序即可实现同指标连续排列的效果。'DataFrame' object has no attribute 'sort':pandas 1.0+版本已废弃sort方法,按列值排序统一使用sort_values()方法。
解决方案代码
你的需求是先按指标名称排列、同指标下按月份顺序排列,直接按指定列排序后导出即可:
import pandas as pd # 原有计算逻辑保留 dfcon = pd.concat([PmDf,ReDf]) dfcon['Need'] = dfcon['Volumes'] / (dfcon['Productivity']*21*8*.80) # 筛选需要保留的列,注意要赋值给变量才会生效 dfcon = dfcon[['Date','Current Team','Metric','Productivity','Volumes','Need']] # 按指定规则排序:先按Metric(指标)升序,同指标下按Date(日期)升序 df_output = dfcon.sort_values(by=['Metric', 'Date'], ascending=[True, True]) # 导出Excel df_output.to_excel(r'S:\FILEPATH\Grouped_Output.xlsx', sheet_name='FTE Need', index = 0)
扩展场景(可选)
如果你后续需要把每个指标的内容单独放到Excel的不同sheet里,可以用groupby遍历分组实现:
with pd.ExcelWriter(r'S:\FilePATH\GroupBy_Per_Sheet.xlsx') as writer: # 按Metric分组遍历 for metric_name, group_df in dfcon.groupby('Metric'): # 每个分组内按日期排序后写入对应sheet,sheet名取指标名(限制30字符以内,符合Excel sheet名规则) group_df.sort_values('Date').to_excel(writer, sheet_name=str(metric_name)[:30], index=False)
内容的提问来源于stack exchange,提问作者Rduguay91
相关产品推荐
相关产品推荐

