数组中重复键的Python求和值

数组中重复键的Python求和值,python,Python,我有以下列表,我需要求RT和LT值之和: Type RT LT NAID RecordTime "T" "15" "123" "NZ45" "2018-05-30 16:59:00" "T" "56" "480" "NZ45" "2018-05-30 16:59:00" "T" "90" "480" "CR98" "2018-05-30 16:59:00" "S" "80" "180" "RU992" "2018-05-30

我有以下列表,我需要求RT和LT值之和:

Type   RT     LT     NAID   RecordTime
"T"   "15"  "123"   "NZ45"  "2018-05-30 16:59:00"
"T"   "56"  "480"   "NZ45"  "2018-05-30 16:59:00"
"T"   "90"  "480"   "CR98"  "2018-05-30 16:59:00"
"S"   "80"  "180"   "RU992" "2018-05-30 16:58:00"
我能够对RT求和,但不能同时求和,使用下面的代码,上面的列表保存在名为“rows”的变量中:

这对RT有效,但我也需要总结一下LT

sumarized = defaultdict(int)
for Type,RT,LT,NAID,RecT in rows:
    sumarized[NAID, RecT] +=RT, =+LT

这不起作用,我不知道如何汇总RT和LT

如果将defaultdict设置为
int
,则只能在字典中为每个键存储一个整数。我不确定你是想求RT和LT之和,还是为每一个生成单独的计数

要将RT和LT组合为单个值,请执行以下操作:

sumarized = defaultdict(int)
for Type,RT,LT,NAID,RecT in rows:
    sumarized[NAID, RecT] += RT + LT
print(sumarized)
输出(格式化以便于阅读):

输出(格式化以便于阅读):

defaultdict({
('NZ45','2018-05-30 16:59:00','RT'):71,
('NZ45','2018-05-30 16:59:00','LT'):603,
('CR98','2018-05-30 16:59:00','RT'):90,
('CR98','2018-05-30 16:59:00','LT'):480,
('RU992','2018-05-30 16:58:00','RT'):80,
('RU992','2018-05-30 16:58:00','LT'):180
})

如果您需要其他类型的数据排列,您可以相应地更改defaultdict键/值/设置。

您可以格式化代码吗?另外,这是熊猫数据框吗?请检查您的代码是否有拼写错误。这是一个从数据库中询问的查询。您知道将两个值相加并将它们保持在同一行的其他方法吗?不一定是默认的,您可以给出一个从数据库中提取的数据生成输出的示例吗?我如何构造数据将非常依赖于(a)我想对db数据进行的任何额外计算,以及(b)我需要进一步使用结果数据的哪些部分。让我问一个新问题
sumarized = defaultdict(int)
for Type,RT,LT,NAID,RecT in rows:
    sumarized[NAID, RecT] += RT + LT
print(sumarized)
defaultdict(<class 'int'>, {
  ('NZ45', '2018-05-30 16:59:00'): 674,
  ('CR98', '2018-05-30 16:59:00'): 570,
  ('RU992', '2018-05-30 16:58:00'): 260
})
for T,RT,LT,NAID,RecT in data:
    sumarized[NAID, RecT, 'RT'] += RT
    sumarized[NAID, RecT, 'LT'] += LT
print(sumarized)
defaultdict(<class 'int'>, {
  ('NZ45', '2018-05-30 16:59:00', 'RT'): 71, 
  ('NZ45', '2018-05-30 16:59:00', 'LT'): 603,
  ('CR98', '2018-05-30 16:59:00', 'RT'): 90,
  ('CR98', '2018-05-30 16:59:00', 'LT'): 480,
  ('RU992', '2018-05-30 16:58:00', 'RT'): 80,
  ('RU992', '2018-05-30 16:58:00', 'LT'): 180
})