python pandas如何查找不同excel表格的数据并对比大小?

有两个表,分别是"本次成绩.xlsx"、"上次成绩.xlsx",希望实现的效果是:依次读取本次成绩.xlsx中的每一行数据在上次成绩.xlsx中查找到对应的名字(如果上次成绩中没有名字就返回对比结果"上次缺席")并对比两次的成绩最终在第三列 ["对比上次"] 中显示对比结果并导出到"本次成绩_对比.xlsx",大致逻辑可以看最后一个思维导图。

PS:如果能用EXCEL软件本身的函数达到相同目的也可以。最好是python。

import pandas as pd
# 读取两张表格
new_df = pd.read_excel("本次成绩.xlsx")
old_df = pd.read_excel("上次成绩.xlsx")
# 拷贝一份要修改的数据,以免破坏源数据
ndf = new_df.copy()
# 首先将不在'上次成绩.xlsx'中的人直接修改'对比上次'字段为'上次缺席'
ndf['对比上次'][~ndf['姓名'].isin(old_df['姓名'].values)] = '上次缺席'
# 循环遍历'上次成绩.xlsx'中的每一行
for i in old_df.itertuples():
old_name = getattr(i, '姓名')
old_score = getattr(i, '上次成绩')
'''
当'本次成绩.xlsx'中的名字与 old_name 相同时
对比'本次成绩'与 old_score 的大小并修改'对比上次'为对应值
'''
ndf.loc[(ndf['姓名'] == old_name) & (ndf['本次成绩'] > old_score), '对比上次'] = '好'
ndf.loc[(ndf['姓名'] == old_name) & (ndf['本次成绩'] == old_score), '对比上次'] = '持平'
ndf.loc[(ndf['姓名'] == old_name) & (ndf['本次成绩'] < old_score), '对比上次'] = '差'
# 导出到新表格并隐藏索引列
ndf.to_excel('对比.xlsx', index=False)

仅供参考,请根据实际情况自行修改优化代码。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2022-10-04
好麻烦,用VB、VBA、VBS实现起来相当容易,而且不需要安装拍怂,直接运行即可。
楼主舍近求远学拍怂,被骗了。追问

您好,能说下vb怎么实现吗,10几年前学过一点vb应该还能看懂代码。

相似回答