赞
踩
由于工作中经常有2个表格内容需要比对一下,把不同的内容列出来,所以做了一个对比程序,如下:
import pandas as pd # 读取2个要对比的表格 df1 = pd.read_excel('需要对比的数据.xlsx', sheet_name='数据1') df2 = pd.read_excel('需要对比的数据.xlsx', sheet_name='数据2') # 获取所有数据,并删除重复值,为了获取所有id df = df1.append(df2) cols_value = df.id.values # 获取'id'列数组 cols_value = list(set(cols_value)) cols_value.remove(df1.iat[0, 0]) # 删除了表头 # 初始化 res,把表1的第一行标题添加到 res row = list(df1.values[0]) columns = ['id', 'data1', 'data2', 'data3', 'data4', 'data5', 'data6', 'data7', 'data8', 'data9', 'data10'] res = pd.DataFrame([row], columns=columns) # 表1和表2进行比对,把不同的数组存入到res中 for i in cols_value: # print(i) row1 = df1[df1.id == i] row2 = df2[df2.id == i] if row1.empty: # 判断是不是空值 res = res.append({'table': '表1', 'id': i}, ignore_index=True) row2['table'] = '表2' res = res.append(row2) else: if row2.empty: # 判断是不是空值 row1['table'] = '表1' res = res.append(row1) # res.loc['id' == i, 'table'] = '表1' res = res.append({'table': '表2', 'id': i}, ignore_index=True) else: temp = row1.append(row2) temp.drop_duplicates(inplace=True) if temp.shape[0] == 1: pass else: row1['table'] = '表1' res = res.append(row1) row2['table'] = '表2' res = res.append(row2) order = ['table', 'id', 'data1', 'data2', 'data3', 'data4', 'data5', 'data6', 'data7', 'data8', 'data9', 'data10'] res = res[order] print(res) res.to_excel('比对结果.xlsx', sheet_name='比对结果') res.save() print('done')
使用时,在同一级目录下建立 需要对比的数据.xlsx
文件,创建2个表,表名为 数据1
和 数据2
,且第一行写 [id, data1, data2, data3, data4, data5, data6, data7, data8, data9, data10]
如下图:
注意:第一列需要填写主建,且2个需要对比的数据顺序需要一致。
最后运行代码后,在同目录下生成 比对结果.xlsx
的文件,打开他就能看到结果了,如下图(表2中缺少id=8的行,所以结果中显示空值):
虽然运行代码能正常处理,但还是会报些错误,请各位能给个建议,谢谢。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。