Python 3:通过键变量从列表(字典)中获取小计

时间:2018-04-06 15:28:49

标签: python

我是Python 3初学者,我正在尝试练习一些例子。 我的字典数据(年,月)格式如下:

year month yearmonth x1 x2 x3 ...
1999  1     199901   10 20 30 ...
1999  3     199903   10 20 30 ...
2000  4     200004   10 20 30 ...
2000  9     200009   10 20 30 ...
2000  10    200010   10 20 30 ...
.................................
.................................

我希望每年为某些密钥获取小计,例如:仅变量x2的小计。预期的结果是返回以下内容:

year  totalx2 
1999     40
2000     60
.........

当然,在我的数据中,这里的年份和月份比此处更多。如果特定年份缺少月份,我会假设在添加12个月小计时该值为0.

任何帮助都会很棒!感谢您的初学者患者。 乔

2 个答案:

答案 0 :(得分:0)

我建议使用pandas库来执行此操作。这里有一个类似的答案:

Pandas sum by groupby, but exclude certain columns

答案 1 :(得分:0)

你可以尝试在新的字典中按年份对值进行分组,这样可以很容易地操作,然后做你的事情。它会看起来像这样

from collections import defaultdict

def group_by_year(list, key): total = "total_" + key new_dict = defaultdict(lambda: 0) for row in list: year = row["year"] if not new_dict[year]: new_dict[year] = {"year": year, total: row[key]} else: new_dict[year][total] += row[key] return [new_dict[key] for key in new_dict]