首页 > 解决方案 > 如何根据列表中的某个值将列表中的值相加?

问题描述

我有一个列表列表,每个列表都有以下项目: site, count, time sample data: site1, 15, 20 我正在尝试找出解决此问题的最佳方法。我想将每个站点的计数和时间相加。

当我遍历每个列表时,我想将它转换为字典,但我不确定这给了我什么。

for site, count, time in lists: #create a dictionary, then what?

最终结果,我想要一个列表或字典(我可以使用的某种数据结构),每个站点的计数和时间加到每个站点的“总”列表中。

前任: site, total_count, total_time

sample data: site1, 50, 100 #all data for site1 added up site2, 40, 300 #all data for site2 added up

不寻找编码的答案,只是完成这项工作的最佳方式和正确方向的一点。

标签: python

解决方案


您说的是某种数据结构,因此可以DataFrame从您拥有的列表中构造 a ,然后使用groupby后面的sum, 来获得您想要的。

示例

import pandas as pd
data = [['site1',15,20],['site1',35,80],['site2',15,20]]
df = pd.DataFrame(data,columns=['site','time','count'])
print(df.groupby('site').sum())

输出

       time  count
site              
site1    50    100
site2    15     20

或者

data = [['site1',15,20],['site1',35,80],['site2',15,20]]
data_d = {}
for rec in data:
    if rec[0] in data_d:
        data_d[rec[0]][0] += rec[1]
        data_d[rec[0]][1] += rec[2]
    else:
        data_d[rec[0]] = rec[1:]

推荐阅读