分组依据Python中字典的汇总列表 [英] Group By & Aggregate List of Dictionaries in Python
问题描述
我有一个字典列表,需要在Python中进行汇总:
I have a list of dictionaries which I need to aggregate in Python:
data = [{"startDate": 123, "endDate": 456, "campaignName": "abc", "campaignCfid": 789, "budgetImpressions": 10},
{"startDate": 123, "endDate": 456, "campaignName": "abc", "campaignCfid": 789, "budgetImpressions": 50},
{"startDate": 456, "endDate": 789, "campaignName": "def", "campaignCfid": 123, "budgetImpressions": 80}]
并且我希望根据预算展示次数进行汇总.
and I'm looking to aggregate based on budgetImpressions.
所以最终结果应该是:
data = [{"startDate": 123, "endDate": 456, "campaignName": "abc", "campaignCfid": 789, "budgetImpressions": 60},
{"startDate": 456, "endDate": 789, "campaignName": "def", "campaignCfid": 123, "budgetImpressions": 80}]
请注意,每个带有特定campaignName的条目都将始终具有相同的相应campaignCfid,startDate和endDate.
Note every entry with a certain campaignName will always have the same corresponding campaignCfid, startDate and endDate.
这可以用Python完成吗?我尝试使用itertools并没有取得太大的成功.使用熊猫会不会是更好的方法?
Can this be done in Python? I've tried using itertools without much success. Would it be a better approach to use Pandas?
推荐答案
是的,请使用熊猫.这很棒.您可以使用groupby
功能并按总和进行聚合,然后将输出转换为字典列表(如果正是您想要的话).
Yes, use pandas. It's great. You can use the groupby
functionality and aggregate by sums, then convert the output to a list of dicts if that is exactly what you want.
import pandas as pd
data = [{"startDate": 123, "endDate": 456, "campaignName": 'abc',
"campaignCfid": 789, "budgetImpressions": 10},
{"startDate": 123, "endDate": 456, "campaignName": 'abc',
"campaignCfid": 789, "budgetImpressions": 50},
{"startDate": 456, "endDate": 789, "campaignName": 'def',
"campaignCfid": 123, "budgetImpressions": 80}]
df = pd.DataFrame(data)
grouped = df.groupby(['startDate', 'endDate', 'campaignCfid',
'campaignName']).agg(sum)
print grouped.reset_index().to_dict('records')
此打印:
[{'startDate': 123L, 'campaignCfid': 789L, 'endDate': 456L, 'budgetImpressions': 60L, 'campaignName': 'abc'}, {'startDate': 456L, 'campaignCfid': 123L, 'endDate': 789L, 'budgetImpressions': 80L, 'campaignName': 'def'}]
这篇关于分组依据Python中字典的汇总列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!