Jan-28-2021, 07:08 AM
Hi Rennerom
That's a tricky one, maybe try apply:
That's a tricky one, maybe try apply:
import pandas as pd from numpy import arange data = {'ID': ['a','b','c','d','e'], 'Target': [2,4,1,2,5], 'P1': [30,50,22.2,1,24.4], 'P2':[40,66.34,33,5,8], 'P3':[59,100,41,6,30], 'P4':[35,130.22,12,0,21], 'P5':[22,90,10.5,1.1,19.9] } df = pd.DataFrame(data) df['Sum']=df.iloc[:,2:].sum(axis=1) df["varsum"]=df.apply(lambda row: row[["P"+str(i) for i in arange(1,1+row["Target"])]].sum(), axis=1) print(df) ID Target P1 P2 P3 P4 P5 Sum varsum 0 a 2 30.0 40.00 59 35.00 22.0 186.00 70.00 1 b 4 50.0 66.34 100 130.22 90.0 436.56 346.56 2 c 1 22.2 33.00 41 12.00 10.5 118.70 22.20 3 d 2 1.0 5.00 6 0.00 1.1 13.10 6.00 4 e 5 24.4 8.00 30 21.00 19.9 103.30 103.30