Python Pandas:如何对DataFrame排序时排除TOTAL行
解决方法:排除'TOTAL'行后排序,再保留总计行在末尾
没问题,要实现只对非'TOTAL'的行排序,同时让总计行固定在最后,可以通过筛选+排序+合并的方式处理,具体代码和效果如下:
import pandas as pd columns=['NAME', 'AB', 'H'] df = pd.DataFrame( [['Harper', '10', '5'], ['Trout', '10', '5'], ['Ohtani', '10', '5'], ['TOTAL', '30', '15']], columns=columns ) # 筛选非TOTAL的行并按NAME排序 sorted_non_total = df[df['NAME'] != 'TOTAL'].sort_values(by='NAME') # 单独提取TOTAL行 total_row = df[df['NAME'] == 'TOTAL'] # 合并排序后的行和总计行,重置索引避免混乱 df1 = pd.concat([sorted_non_total, total_row], ignore_index=True) print(df1)
运行这段代码后,输出结果为:
NAME AB H 0 Harper 10 5 1 Ohtani 10 5 2 Trout 10 5 3 TOTAL 30 15
逻辑说明
- 先通过
df['NAME'] != 'TOTAL'筛选出所有非总计行,对这部分行按NAME列排序; - 单独提取
NAME为'TOTAL'的行,确保它不会参与排序; - 用
pd.concat()将排序后的非总计行和总计行合并,ignore_index=True用来重置合并后的索引,避免原索引混乱。
这样就完美实现了你想要的排序效果!
内容的提问来源于stack exchange,提问作者shintaro202020
相关产品推荐
相关产品推荐

