Один метод для получения Container
s=df.Weight.cumsum()/2000
pd.cut(s,np.arange(0,max(s)+1,1)).cat.codes+1
0 1
1 1
2 2
3 2
4 3
5 3
6 4
dtype: int8
df['container']=pd.cut(s,np.arange(0,max(s)+1,1)).cat.codes+1
Тогда мы используем transform
df['total sum']=df.groupby('container').Weight.transform('sum')
df
LoadNo. Code Weight container total sum
0 1 4000 200 1 2000
1 2 4000 1800 1 2000
2 3 4000 400 2 1400
3 4 4000 1000 2 1400
4 5 5000 1000 3 1800
5 6 5000 800 3 1800
6 7 5000 1200 4 1200