Python 检查同一组中的两列之和是否等于

Python 检查同一组中的两列之和是否等于,python,pandas,numpy,Python,Pandas,Numpy,我有一个采购记录表,显示客户和商店记录的采购历史。我想得到一个新的列,其中显示每个客户的客户记录和门店记录的总和,作为一个组,等于。基本上5+3=5+3,所以001是,但2!=3所以002没有 日期 卡斯蒂德 伊特米德 客户记录 商店记录 0514 001 A. 5. 5. 0514 001 B 3. 3. 0514 002 A. 2. 3. 您可以通过groupby和transform sum,然后检查轴=1上列的差异。然后获取最后一个结果以检查它是否为0,并有条件地为新列赋值: c = (d

我有一个采购记录表,显示客户和商店记录的采购历史。我想得到一个新的列,其中显示每个客户的客户记录和门店记录的总和,作为一个组,等于。基本上5+3=5+3,所以001是,但2!=3所以002没有

日期 卡斯蒂德 伊特米德 客户记录 商店记录 0514 001 A. 5. 5. 0514 001 B 3. 3. 0514 002 A. 2. 3.
您可以通过groupby和transform sum,然后检查轴=1上列的差异。然后获取最后一个结果以检查它是否为0,并有条件地为新列赋值:

c = (df.groupby("custID")[['cust rec','store rec']]
      .transform('sum').diff(axis=1).iloc[:,-1].eq(0))

df['sum match'] = np.where(c,"Yes",'No')

输出:

print(df)

   Date  custID itmID  cust rec  store rec sum match
0   514       1     A         5          5       Yes
1   514       1     B         3          3       Yes
2   514       2     A         2          3        No

有关步骤的更多详细信息:

Groupby+transform sum返回每列每个组的总和:

print(df.groupby("custID")[['cust rec','store rec']].transform('sum'))

   cust rec  store rec
0         8          8
1         8          8
2         2          3
那么轴上的差值=1:

print(df.groupby("custID")[['cust rec','store rec']].transform('sum').diff(axis=1))
   cust rec  store rec
0       NaN        0.0
1       NaN        0.0
2       NaN        1.0