У меня есть фрейм данных, который в настоящее время выглядит следующим образом:
df = pd.DataFrame(np.array([[1, 2, 'Apples 20pk ABC123', 4, 5], [6, 7,
'Bananas 20pk ABC123', 9, 0], [1, 2, 'Apples 20pk ABC123', 8, 9]]),
columns= ['Serial #', 'Branch ID', 'Info', 'Value1', 'Value2'])
Serial# Branch ID Info Value1 Value2
0 1 2 Apples 20pk ABC123 4 5
1 6 7 Bananas 20pk ABC123 9 0
2 1 2 Apples 20pk ABC123 8 9
Я хотел сгруппировать столбцы: Serial #, ID ветви и Info, чтобы получить совокупную сумму столбцов "value1" и "значение2" .По сути, он будет выполнять "cumsum", только если совпадают значения в столбцах Serial #, BranchID и Info.
Я думал, что мог бы сделать что-то вроде ниже, но я только получаю df, который возвращает только индекс:
df[df.columns.difference(['Serial#', 'Branch ID',
'Info'])].apply(pd.to_numeric, errors='coerce')
# converting other columns(not the three groupby columns) to numeric values
df_cumulative = df.groupby(['Serial#', 'Branch ID',
'Info']).cumsum().add_suffix('_cumulative')
Конечный результат в идеале был бы:
Serial# Branch ID Info Value1_cum Value2_cum
0 1 2 Apples 20pk ABC123 4 5
1 6 7 Bananas 20pk ABC123 9 0
2 1 2 Apples 20pk ABC123 12 14
Спасибо!