微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python-分组并求和一个元组列表

如何解决Python-分组并求和一个元组列表

>>> [(x[0:2] + (sum(z[2] for z in y),) + x[2:5]) for (x, y) in
      itertools.groupby(sorted(L, key=operator.itemgetter(0, 1, 3, 4)),
      key=operator.itemgetter(0, 1, 3, 4))]
[
  ('A', '', Decimal('21.0000000000'), 1330, datetime.datetime(2012, 5, 14, 0, 0)),
  ('A', '', Decimal('4.0000000000'), 1330, datetime.datetime(2012, 6, 8, 0, 0)),
  ('AA', 'C', Decimal('31.0000000000'), 1330, datetime.datetime(2012, 5, 31, 0, 0)),
  ('B', '', Decimal('7.0000000000'), 1330, datetime.datetime(2012, 5, 24, 0, 0)),
  ('B', '', Decimal('31.0000000000'), 1330, datetime.datetime(2012, 6, 4, 0, 0))
]

(注意:重新格式化输出

解决方法

给出以下列表:

[
    ('A','',Decimal('4.0000000000'),1330,datetime.datetime(2012,6,8,0)),('B',Decimal('31.0000000000'),4,('AA','C',5,31,Decimal('7.0000000000'),24,('A',Decimal('21.0000000000'),14,0))
]

我想将它们按元组的第一,第二,第四和第五列进行分组,并对第三列求和。在此示例中,我将列命名为col1,col2,col3,col4,col5。

在SQL中,我将执行以下操作:

select col1,col2,sum(col3),col4,col5 from my table
group by col1,col5

有没有一种“很酷”的方式来做到这一点,或者都是手动循环?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。