Python熊猫比较2个Microsoft Excel并输出更改

时间:2018-07-19 12:42:50

标签: python pandas

我正在尝试使用Python熊猫来确定需要对某些行进行的更改。

data1

name   contract   id    unit  qty  location
siteA  00012345  A001   pcs    1    M.K.141.1
siteA  00012345  A002   pcs    2    M.K.141.1
siteA  00012345  A003   pcs    3    M.K.141.1
siteA  00012345  A004   pcs    12   M.K.141.1
siteA  00012345  A005   pcs    26   M.K.141.1
siteA  00012345  A006   pcs    2    M.K.141.1
siteB  00012345  A001   pcs    2    M.K.285.1
siteB  00012345  A003   pcs    3    M.K.285.1
siteB  00012345  A004   pcs    5    M.K.285.1
siteB  00012345  A005   pcs    10   M.K.285.1
siteB  00012345  A006   pcs    11   M.K.285.1

data2

name   id   unit   qty
siteA  A001  pcs    1
siteA  A002  pcs    4 
siteA  A003  pcs    6 
siteA  A004  pcs    12
siteA  A005  pcs    28
siteB  A001   pcs   2 
siteB  A003   pcs   6 
siteB  A004   pcs   5 
siteB  A005   pcs   33
siteB  A006   pcs   11

我要找出的是将data2与data1进行比较,并分别检查siteA和siteB之间的数量差异,并修改data1中的数量

需要一些先机,因为研究熊猫文档使我花了太多时间才能理解该怎么做。

谢谢!

我当前拥有的

代码段

import pandas as pd

df1 = pd.read_excel(r'D:\data1.xlsx', 'Sheet1')
df2 = pd.read_excel(r'D:\data2.xlsx', 'Sheet1')

for index, row in df1.iterrow():
    pass

太可惜了,我对熊猫来说还太陌生,并试图学习如何使用它。

1 个答案:

答案 0 :(得分:0)

我想我会使用合并将那些合并到数据集中,然后寻找差异。

data1.merge(data2, on=['name','id','unit']).query('qty_x != qty_y')

输出:

    name  contract    id unit  qty_x   location  qty_y
1  siteA     12345  A002  pcs      2  M.K.141.1      4
2  siteA     12345  A003  pcs      3  M.K.141.1      6
4  siteA     12345  A005  pcs     26  M.K.141.1     28
6  siteB     12345  A003  pcs      3  M.K.285.1      6
8  siteB     12345  A005  pcs     10  M.K.285.1     33

其中_x和_y是默认后缀,这些后缀赋予每个数据帧中的通用命名列。您无法在合并中使用suffixes参数来重新定义这些后缀。