如何用Python在Excel中对相似名称的金额求和并生成DataFrame?
汇总Excel中相似标题对应的金额并生成DataFrame
步骤1:读入Excel数据
先把Excel文件加载到pandas的DataFrame里,假设你的Excel文件叫data.xlsx,标题列和金额列的名称分别是Title和Amount(根据实际情况替换):
import pandas as pd # 读取Excel,表头用第0行 df = pd.read_excel("data.xlsx", header=0) # 先看看原始数据长啥样 print(df.head())
步骤2:给相似标题分组
相似标题的处理得看你的具体格式,分两种常见情况:
情况A:标题有固定分隔符(比如"-")
如果标题是Office Supplies - Pens这种带分类前缀的格式,直接拆分取前缀作为分组依据:
# 按"-"拆分标题,取第一部分作为分组名 df["分组标题"] = df["Title"].str.split(" - ").str[0]
情况B:语义相似的标题(比如"打印纸采购"和"打印纸批量采购")
用fuzzywuzzy库做模糊匹配,先装依赖:
pip install fuzzywuzzy python-Levenshtein
然后写分组逻辑:
from fuzzywuzzy import process # 先拿到所有不重复的标题 unique_titles = df["Title"].unique() # 建立相似标题的映射关系 group_map = {} for title in unique_titles: # 匹配相似度≥80的标题(阈值可以自己调) matches = process.extract(title, unique_titles, scorer=fuzz.token_sort_ratio) for match, score in matches: if score >= 80 and match not in group_map: group_map[match] = title # 给原表加上分组列 df["分组标题"] = df["Title"].map(group_map)
步骤3:按分组汇总金额
把同一分组下的金额加总,生成汇总后的DataFrame:
# 按分组标题求和,重置索引变成普通DataFrame summary_df = df.groupby("分组标题")["Amount"].sum().reset_index() # 可以给列改个更直观的名字 summary_df.rename(columns={"分组标题": "汇总标题", "Amount": "总金额"}, inplace=True) # 看看最终结果 print(summary_df)
可选:把结果存回Excel
如果需要导出汇总数据:
summary_df.to_excel("汇总结果.xlsx", index=False)
内容的提问来源于stack exchange,提问作者SidTerzaghi
相关产品推荐
相关产品推荐

