In my dataframe I want to sum certain rows in a column and output them in a new column 'UE_more_days'
is
ATEXT BEGUZ_UE UE_more_days
0 11.00 0.0
1 CT 23.00 Nan
2 RT 33.00 46.0
3 15.00 0.0
3 15.00 0.0
4 12.75 0.0
5 19.75 0.0
6 14.75 0.0
7 CT 23.00 29.5
8 CT 24.00 46.0
9 CT 24.00 48.0
10 RT 33.00 48.0
11 15.00 0.0
12
etc
should be
ATEXT BEGUZ_UE UE_more_days
0
1 CT 23.00
2 RT 33.00 56.0
3 15.00
4 12.75
5 19.75
6 14.75
7 CT 23.00
8 CT 24.00
9 CT 24.00
10 RT 33.00 104.0
11 15.00
12
etc
should be 2
ATEXT BEGUZ_UE subtract add UE_more_days is_m_days
0 11.00 *0.00* *3.92*
1 CT *23.00* 0.00 0.00
2 RT *33.00* 0.00 0.00 56.0
3 *15.00* 0.20 0.00 *74.92*
4 12.75
5 19.75
6 14.75 *2.00* *0.00*
7 CT *23.00*
8 CT *24.00*
9 CT *24.00*
10 TT *33.00* 104.0
11 *15.00* 0.00 3.57 *117.00*
12
etc
my last try
bedd2 = [(df['ATEXT'] != ''),]
result2 = [(df.iloc[0:]['BEGUZ_UE'].astype(float).reset_index(drop=True) +
df.iloc[1:]['BEGUZ_UE'].astype(float)).round(decimals=2).shift(1)]
df['min_UE_mehr_Tage'] = np.select(bedd2, result2)
How can I sum rows from a column based on a condition and output them in a new column?
df1['target'] = df1['BEGUZ_UE'].where(df1['ATEXT'].isin(['CT', 'RT']))
df1['target'].fillna(0, inplace=True)
df1['group'] = (df1['ATEXT'] == 'RT').shift().fillna(0).cumsum()
df1['target_sum'] = df1.groupby('group')['target'].cumsum()
df1['last_UE_more_days'] = df1['target_sum'].where(df1['ATEXT'] == 'RT')
End result:
ATEXT BEGUZ_UE UE_more_days target target_sum last_UE_more_days
0 11.00 0.0 0.0 0.0 NaN
1 CT 23.00 NaN 23.0 23.0 NaN
2 RT 33.00 46.0 33.0 56.0 56.0
3 15.00 0.0 0.0 0.0 NaN
4 15.00 0.0 0.0 0.0 NaN
5 12.75 0.0 0.0 0.0 NaN
6 19.75 0.0 0.0 0.0 NaN
7 14.75 0.0 0.0 0.0 NaN
8 CT 23.00 29.5 23.0 23.0 NaN
9 CT 24.00 46.0 24.0 47.0 NaN
10 CT 24.00 48.0 24.0 71.0 NaN
11 RT 33.00 48.0 33.0 104.0 104.0
12 15.00 0.0 0.0 0.0 NaN