当前位置:   article > 正文

使用pandas比对Excel表格,把不同数据列出_pandas对比两张表数据差异

pandas对比两张表数据差异

由于工作中经常有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')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48

使用时,在同一级目录下建立 需要对比的数据.xlsx 文件,创建2个表,表名为 数据1数据2,且第一行写 [id, data1, data2, data3, data4, data5, data6, data7, data8, data9, data10] 如下图:
在这里插入图片描述
注意:第一列需要填写主建,且2个需要对比的数据顺序需要一致。

最后运行代码后,在同目录下生成 比对结果.xlsx 的文件,打开他就能看到结果了,如下图(表2中缺少id=8的行,所以结果中显示空值):
在这里插入图片描述
虽然运行代码能正常处理,但还是会报些错误,请各位能给个建议,谢谢。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/209994
推荐阅读
相关标签
  

闽ICP备14008679号