'Python SUMIF with one condition across dataframes

I'm working with two dataframes

  • MRP:
Material Description Septiembre
1208181 ADSV,NA,MX,ADH HOTMET 814433PM 630.2888856
1206500 SHWP,NA,MX,WRAP M-WRAP 18' 459.4193011
3049172 INSR,LUFTL,BR,LUFTAL 0
3049173 CLOS,LUFTL,BR,BERRY 0
3060614 BOTL,LUFTL,BR,LDPE/HDPE 15 ML 0
  • SMCalc:
Material Description Brand Available Qty Avail. - 6mth. sep
0324583 MEAS,MUCNX,US,BLUE,20ML MCN 921888 980554.96
0327757 CLOS,MUCNX,US,CR24MM MCN 9509400 6219256.172 975724.64
1019906 ACETAMINOPHEN DC 90 COARSE L TEM 43900 -4443.531438 7372.2407
1020442 ACETAMINOPHEN POWDER NA 64203.289 38020.3542 6784.4993
1120252 TARTARIC ACID PIC 43217.08 9370.0843

And I'm using this formula in excel: =+SUMIF(MRP!$A:$A,$A2,MRP!C:C) where:

  • Range is MRP!A:A (Material)
  • Criteria is SMCalc $A2 (Material)
  • Sum range is MRP!C:C (Septiembre)

The output I'm looking for is the column F in SMCalc.



Solution 1:[1]

If I'm not wrong, that excel formula calculates the sum of 'Septiembre' in column C of MRP when 'Material' in SMCalc matches 'Material' in MRP...

Assuming you have both excel sheets as pandas dataframes, I would then do:

mrp.groupby('Material')['Septiembre'].sum().reset_index()

To find the sum of 'Septiembre' per material in mrc. Then merge that with the other dataframe:

smcalc.merge(mrp.groupby('Material')['Septiembre'].sum().reset_index(),how='left')

To then bring back those values to smcalc where we want them to be

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Daniel Weigel