本文介绍如何使用 Python 的 Pandas 库,向现有 CSV 文件中新增一列(如 salary),该列值为指定多列(如 basic_sal、Allowance、Perk)的行级求和,并将结果写入新文件或覆盖原文件。
数据处理中,这种场景很常见:你手头有一份员工薪资明细的 CSV 文件,里面已经列出了基本工资、津贴、福利等字段,但老板想要一个总薪资列——把这三项加到一起,放在最后一列。手动在 Excel 里拖公式当然也行,但如果文件有几百上千行,或者每隔几天就要更新一次,那就有点折磨人了。
用 Pandas 解决这件事,本质上就三步:读取、计算、保存。代码简洁到只要三行,而且语义清晰、不易出错。比起用 awk 写一串正则匹配或者手动逐行解析,Pandas 在列名语义化、类型安全以及后期维护上的优势不是一星半点。
具体来说,操作流程是这样的:
- 读取 CSV 文件——用
pd.read_csv()把数据加载成 DataFrame; - 新增计算列——直接通过赋值语法
df['salary'] = ...创建新列,支持对多列做逐行算术运算; - 保存结果——调用
to_csv()输出到新文件(推荐),记得加上index=False避免把行号写进去。
直接看代码:
import pandas as pd
# 读取原始 CSV(请替换为实际路径)
df = pd.read_csv("employees.csv")
# 新增 salary 列:对 basic_sal、Allowance、Perk 三列求和
df["salary"] = df["basic_sal"] + df["Allowance"] + df["Perk"]
# 保存结果(不保留索引,确保格式与原始一致)
df.to_csv("employees_with_salary.csv", index=False)
这里有几个值得留意的细节:
- 参与计算的列必须是数值类型(int64 或 float64)。如果原始数据里混了空值或者“$2,000”这种带符号的文本,建议先做一步类型清洗:
df[["basic_sal","Allowance","Perk"]] = df[["basic_sal","Allowance","Perk"]].apply(pd.to_numeric, errors='coerce'),把非数字转为 NaN 再决定怎么处理。 - 新增的列会自动出现在最右侧,天然符合“最后一列”的要求,不用手动调位置。
- 如果非要覆盖原文件,
to_csv("employees.csv", index=False)也能做到,但强烈建议先留个备份。毕竟改完发现算错了,想恢复可就麻烦了。 - 如果需要一次添加多个衍生列(比如毛工资、税、净工资),可以链式赋值或者分步定义,逻辑上保持清晰即可,Pandas 不限制你一口气加多少列。
这套方法可读性高、扩展性好,而且足够健壮——说白了,它就是数据预处理阶段添加衍生指标的“标准操作”,值得收藏复用。