Python 按给定元素对列表进行分组并计算平均值

Python 按给定元素对列表进行分组并计算平均值,python,list,Python,List,如果您有以下列表: l = [(('01001', '01003'), 4.15), (('01001', '01005'), 2.83), (('01001', '01007'), 3.32), (('01002', '01009'), 6.83), (('01002', '01011'), 2.53), (('01003', '01013'), 20.50), (('01003', '01013'), 20.50)] 我想计算此列表第一个元素(“01001”、“01002”和“

如果您有以下列表:

l = [(('01001', '01003'), 4.15),
 (('01001', '01005'), 2.83),
 (('01001', '01007'), 3.32),
 (('01002', '01009'), 6.83),
 (('01002', '01011'), 2.53),
 (('01003', '01013'), 20.50),
 (('01003', '01013'), 20.50)]
我想计算此列表第一个元素(“01001”、“01002”和“01003”)的平均值

到目前为止,我的方法是将列表转换成一个数据帧,将第一个括号分成两列,然后计算平均值。还有更像蟒蛇的方式吗


任何帮助都将不胜感激

熊猫似乎在这方面做得太过分了。由于要分组的值似乎是连续的(否则使用字典),因此可以使用这些浮点值并取其平均值:

from itertools import groupby
from statistics import mean

[mean(v for *_, v in v) for k,v in groupby(l, lambda x: x[0][0])]
# [3.4333333333333336, 4.68, 20.5]
或者,如果您喜欢字典:

{k:mean(v for *_, v in v) for k,v in groupby(l, lambda x: x[0][0])}
# {'01001': 3.4333333333333336, '01002': 4.68, '01003': 20.5}

熊猫似乎在这方面做得太过分了。由于要分组的值似乎是连续的(否则使用字典),因此可以使用这些浮点值并取其平均值:

from itertools import groupby
from statistics import mean

[mean(v for *_, v in v) for k,v in groupby(l, lambda x: x[0][0])]
# [3.4333333333333336, 4.68, 20.5]
或者,如果您喜欢字典:

{k:mean(v for *_, v in v) for k,v in groupby(l, lambda x: x[0][0])}
# {'01001': 3.4333333333333336, '01002': 4.68, '01003': 20.5}
大概是这样的:

from statistics import mean
l = [(('01001', '01003'), 4.15),
 (('01001', '01005'), 2.83),
 (('01001', '01007'), 3.32),
 (('01002', '01009'), 6.83),
 (('01002', '01011'), 2.53),
 (('01003', '01013'), 20.50),
 (('01003', '01013'), 20.50)]
 
print(mean(int(x[0][0]) for x in l))
输出

1001.8571428571429
大概是这样的:

from statistics import mean
l = [(('01001', '01003'), 4.15),
 (('01001', '01005'), 2.83),
 (('01001', '01007'), 3.32),
 (('01002', '01009'), 6.83),
 (('01002', '01011'), 2.53),
 (('01003', '01013'), 20.50),
 (('01003', '01013'), 20.50)]
 
print(mean(int(x[0][0]) for x in l))
输出

1001.8571428571429
这行吗
sum([int(t[0][0])表示l中的t])/len(l)
这行吗<代码>总和([int(t[0][0]),表示l中的t])/len(l)