如何使用itertools使用groupby获取结果后进行聚合

时间:2018-04-17 09:01:53

标签: python list dictionary itertools

我有一个列表

a=[{'name': 'xyz','inv_name':'asd','quant':300,'amt':20000, 'current':30000},{'name': 'xyz','inv_name':'asd','quant':200,'amt':2000,'current':3000}]

我使用itertools groupby获取此列表。

我想在为同名和inv_name添加quant,amt和current字段后形成一个列表,并创建一个类似于以下列表的列表:[{'name':'xyz','inv_name':'asd','quant':500,'amt':22000,'current':33000}

有关如何实现这一目标的任何建议吗?

1 个答案:

答案 0 :(得分:0)

如果您对使用第三方库感到满意,pandas会接受字典列表:

import pandas as pd

a=[{'name': 'xyz','inv_name':'asd','quant':300,'amt':20000, 'current':30000},
   {'name': 'xyz','inv_name':'asd','quant':200,'amt':2000,'current':3000}]

df = pd.DataFrame(a)

res = df.groupby(['name', 'inv_name'], as_index=False).sum().to_dict(orient='records')

# [{'amt': 22000,
#   'current': 33000,
#   'inv_name': 'asd',
#   'name': 'xyz',
#   'quant': 500}]