Если вы возьмете, к примеру, Джона, общее количество trainging_hours составит 250. В период с месяца 1 по месяц 4 часы не записывались. , поэтому total_diff остался 250.
В месяце 5 было записано 50 часов, поэтому total_diff для месяца 5 равен (250-50) = 200, месяца 6 (200-60) = 140 и так далее.
Тот же подход и для других имен.
Введите здесь описание изображения
Я попробовал приведенный ниже код, но он не сработал должным образом.
Код: Выделить всё
mask = ~df['month'].isin(['John_Total', 'Amber_Total', 'Barron_Total'])
df.loc[mask, 'total_diff'] = df[mask].groupby("name")['training_hours'].cumsum()
df['total_diff'] = df.groupby('name')['total_diff'].fillna(df['training_hours'])
df
Подробнее здесь: https://stackoverflow.com/questions/789 ... -dataframe