Pandas分组聚合排序报错求助:报错原因及正确代码解析
报错原因分析
你的第一段代码报错有两个核心问题:
agg(max)的行为不符合预期:groupby("price").agg(max)会对DataFrame中所有数值型列(包括price、points以及其他可能的数值列)执行max聚合,返回的结果是一个以price为行索引、原数值列为列的DataFrame。sort_index("points")用法完全错误:sort_index()是用来对数据的索引进行排序的方法,它的参数不接受列名。你传入"points"作为参数,Python会将其误认为是axis参数的值,但axis只能是0(行)或1(列),字符串"points"不是合法的轴名称,因此触发报错。如果你想按points列的值排序,应该用sort_values("points")而非sort_index()。
正确代码的逻辑拆解
b = reviews.groupby('price')['points'].max().sort_index()的执行步骤清晰明确:
reviews.groupby('price')['points']:先以price列的值为分组依据,从原DataFrame中只筛选出points列,得到一个仅针对points列的分组对象。.max():对每个price分组内的points值取最大值,最终返回一个Series——行索引是price的唯一取值,对应的值是该分组下points的最大值。.sort_index():对这个Series的行索引(也就是price的数值)进行升序排序,最终得到按price从小到大排列的各分组points最大值结果。
内容的提问来源于stack exchange,提问作者Krishna Lohith
相关产品推荐
相关产品推荐

