【发布时间】:2019-06-08 08:54:07
【问题描述】:
如何在dictionary中groupby两个keys得到另一个键val的值之和。
Input:
data = {'key1':['a','a', 'b', 'b'], 'key2':['m','n', 'm', 'm'],
'val':[1, 2, 3, 4]}
在这个例子中,我想将groupbykey1和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
【问题讨论】:
标签: python dictionary pandas-groupby