89 lines
3.0 KiB
Python
89 lines
3.0 KiB
Python
|
|
#!/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()
|