Как groupby
два keys
в dictionary
и получить сумму значений другого ключа val
.
Input:
data = {'key1':['a','a', 'b', 'b'], 'key2':['m','n', 'm', 'm'],
'val':[1, 2, 3, 4]}
ВВ этом примере я хочу groupby
key1
и key2
, а затем суммировать значение в val
.
Expected:
data = {'key1':['a','a', 'b', 'b'], 'key2':['m','n', 'm', 'm'],
'val':[1, 2, 3, 4], 'val_sum':[1, 2, 7, 7]}
На самом деле,Я не хочу преобразовывать словарь data
в pandas.DataFrame
, а затем преобразовывать обратно в dictionary
для достижения этого, потому что мой data
на самом деле очень большой.
Обновление:
Чтобы понять, как генерируется val_sum
, я публикую свой код, используя pandas.DataFrame
.
df = pd.DataFrame(data)
tmp = df.groupby(['key1', 'key2'])['val'].agg({'val_sum':'sum'})
df['val_sum'] = df.set_index(['key1', 'key2']).index.map(tmp.to_dict()['val_sum'])
И результат отображается следующим образом:
key1 key2 val val_sum
0 a m 1 1
1 a n 2 2
2 b m 3 7
3 b m 4 7