#!/usr/bin/env python3 """ 列计算模板 对列进行加减乘除等计算操作 """ import pandas as pd import sys from pathlib import Path def main(): # 参数配置 file_path = "{file}" output_path = "{output}" operation = "{operation}" # 操作类型: add/subtract/multiply/divide/custom # 操作参数 column1 = "{column1}" # 第一列 column2 = "{column2}" # 第二列(可选) result_column = "{result_column}" # 结果列名 value = {value} # 常数值(可选) formula = "{formula}" # 自定义公式(可选) # 读取文件 df = pd.read_excel(file_path) print(f"原始数据: {{len(df)}} 行") # 执行计算 if operation == "add": if column2: df[result_column] = df[column1] + df[column2] print(f"计算: {{column1}} + {{column2}} = {{result_column}}") else: df[result_column] = df[column1] + value print(f"计算: {{column1}} + {{value}} = {{result_column}}") elif operation == "subtract": if column2: df[result_column] = df[column1] - df[column2] print(f"计算: {{column1}} - {{column2}} = {{result_column}}") else: df[result_column] = df[column1] - value print(f"计算: {{column1}} - {{value}} = {{result_column}}") elif operation == "multiply": if column2: df[result_column] = df[column1] * df[column2] print(f"计算: {{column1}} × {{column2}} = {{result_column}}") else: df[result_column] = df[column1] * value print(f"计算: {{column1}} × {{value}} = {{result_column}}") elif operation == "divide": if column2: df[result_column] = df[column1] / df[column2] print(f"计算: {{column1}} ÷ {{column2}} = {{result_column}}") else: df[result_column] = df[column1] / value print(f"计算: {{column1}} ÷ {{value}} = {{result_column}}") elif operation == "custom" and formula: # 自定义公式(简单实现) try: # 替换列名为实际的 Series context = {{col: df[col] for col in df.columns}} df[result_column] = eval(formula, {{'pd': pd}}, context) print(f"自定义公式: {{formula}} = {{result_column}}") except Exception as e: print(f"自定义公式执行失败: {{e}}") sys.exit(1) # 保存结果 df.to_excel(output_path, index=False) print(f"\n计算完成") print(f"输出文件: {{output_path}}") # 显示统计信息 if result_column in df.columns: print(f"\n结果列统计 ({{result_column}}):") print(f" 最小值: {{df[result_column].min():.2f}}") print(f" 最大值: {{df[result_column].max():.2f}}") print(f" 平均值: {{df[result_column].mean():.2f}}") print(f" 总和: {{df[result_column].sum():.2f}}") if __name__ == "__main__": main()