Aja*_*mar 5 python grouping dictionary sum pandas
我在 dict 格式列表中有一组数据,如下所示:
data = [
{'name': 'A', 'tea':5, 'coffee':6},
{'name': 'A', 'tea':2, 'coffee':3},
{'name': 'B', 'tea':7, 'coffee':1},
{'name': 'B', 'tea':9, 'coffee':4},
]
Run Code Online (Sandbox Code Playgroud)
我正在尝试按“名称”分组,并分别将“茶”和“咖啡”相加
最终分组的数据必须采用以下格式:
grouped_data = [
{'name': 'A', 'tea':7, 'coffee':9},
{'name': 'B', 'tea':16, 'coffee':5},
]
Run Code Online (Sandbox Code Playgroud)
我尝试了一些步骤:
from collections import Counter
c = Counter()
for v in data:
c[v['name']] += v['tea']
my_data = [{'name': name, 'tea':tea} for name, tea in c.items()]
for e in my_data:
print e
Run Code Online (Sandbox Code Playgroud)
上述步骤返回以下输出:
{'name': 'A', 'tea':7,}
{'name': 'B', 'tea':16}
Run Code Online (Sandbox Code Playgroud)
只有我可以总结关键的“茶”,我不能得到关键的“咖啡”的总和,你们能帮忙解决这个解决方案以获得 grouped_data 格式
使用pandas
:
df = pd.DataFrame(data)
df
coffee name tea
0 6 A 5
1 3 A 2
2 1 B 7
3 4 B 9
g = df.groupby('name', as_index=False).sum()
g
name coffee tea
0 A 9 7
1 B 5 16
Run Code Online (Sandbox Code Playgroud)
而且,最后一步,df.to_dict
:
d = g.to_dict('r')
d
[{'coffee': 9, 'name': 'A', 'tea': 7}, {'coffee': 5, 'name': 'B', 'tea': 16}]
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5725 次 |
最近记录: |