Python 检查同一组中的两列之和是否等于
我有一个采购记录表,显示客户和商店记录的采购历史。我想得到一个新的列,其中显示每个客户的客户记录和门店记录的总和,作为一个组,等于。基本上5+3=5+3,所以001是,但2!=3所以002没有 日期 卡斯蒂德 伊特米德 客户记录 商店记录 0514 001 A. 5. 5. 0514 001 B 3. 3. 0514 002 A. 2. 3.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
您可以通过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