我正在尝试使用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
太可惜了,我对熊猫来说还太陌生,并试图学习如何使用它。
答案 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
参数来重新定义这些后缀。