У меня есть pandas фрейм данных, где я пытаюсь суммировать на основе группировок, но, похоже, я не могу правильно определить порядок. В приведенном ниже примере я хочу сгруппировать по group2, а затем group1 и суммировать без двойного подсчета значений group1. Это часть более крупной таблицы с другими происходящими событиями, поэтому я не хочу отфильтровывать по уникальным наборам группы 1-2.
Использование pandas 1.0.5
x, y = [(21643,21665,21640,21668,21713,21706), (30,28,84,2,32,-9)]
val = [11,27,31,15,50,35]
group1, group2 = [(1,1,3,4,1,4), (21660,21660,21660,21660,21700,21700)]
df = pd.DataFrame(list(zip(x, y, val, group1, group2)),
columns =['x', 'y', 'val', 'group1', 'group2']
)
df.reset_index(drop=True, inplace=True)
df.sort_values(['group2', 'group1'],inplace=True)
df['group1_mean'] = df.groupby(['group2', 'group1'])['val'].transform('mean')
df['group2_sum'] = df.groupby(['group2', 'group1'])['group1_mean'].transform('sum')
display(df)
введите описание изображения здесь