如何使用pandas统计CSV/Excel中总费用最高、最低的岗位类别
工地运营CSV数据最高/最低费用岗位统计实现方案
前置修正
你现有代码里的路径拼接参数顺序有误,os.path.join第一个参数为父路径,第二个为文件名,否则会生成无效路径,修正如下:
# 原错误写法:file = os.path.join(filename, path) file = os.path.join(path, filename)
实现逻辑
你只需要先按Qualification字段分组汇总每个岗位的总费用,再直接提取最大、最小值对应的岗位即可,完整代码如下:
import pandas as pd import os filename = "site_operation.csv" path = "." file = os.path.join(path, filename) tscv1 = pd.read_csv(file, sep=";", thousands=".", decimal=",", encoding="ansi") # 1. 统计总运营费用 total_cost = tscv1['costs'].sum() print("所有运营总费用:", round(total_cost, 2)) # 2. 统计各Qualification对应总费用 qual_total_cost = tscv1.groupby('Qualification')['costs'].sum() print("\n各岗位总费用:\n", qual_total_cost.round(2)) # 3. 统计总费用最高的Qualification max_qual = qual_total_cost.idxmax() max_cost = qual_total_cost.max() print(f"\n总费用最高的岗位:{max_qual},对应总费用:{round(max_cost, 2)}") # 4. 统计总费用最低的Qualification min_qual = qual_total_cost.idxmin() min_cost = qual_total_cost.min() print(f"\n总费用最低的岗位:{min_qual},对应总费用:{round(min_cost, 2)}")
核心方法说明
groupby('Qualification')['costs'].sum():按照岗位字段分组,对费用字段求和,返回索引为岗位名称、值为对应总费用的Series结构idxmax():返回Series中最大值对应的索引,也就是总费用最高的岗位名称,配套max()可获取对应费用数值idxmin():返回Series中最小值对应的索引,也就是总费用最低的岗位名称,配套min()可获取对应费用数值
内容的提问来源于stack exchange,提问作者virat
相关产品推荐
相关产品推荐

