如何找到具有唯一标识符的列表的平均值

所以基本上,我有一个整数列表,我希望得到它们的平均值。关键是我还有另一个长度相等的字符串列表。在下表中进行配置。现在,我基本上需要添加与正确字母相关的整数之和,然后返回这些字母的平均值。这是在Python 3上完成的,过去几天来我一直在这个问题上停留。有人可以指出我正确的方向吗?

before

| 2   | a |
+-----+---+
| 241 | b |
+-----+---+
| 21  | a |
+-----+---+
| 512 | b |
+-----+---+
| 142 | a |
+-----+---+
after
+-----+---+
| 165 | a |
+-----+---+
| 753 | b |
+-----+---+
a65758872 回答:如何找到具有唯一标识符的列表的平均值

您可以尝试使用熊猫:

import pandas as pd

list_1 = [2,241,21,512,142]
list_2 = ['a','b','a','a']

c = pd.DataFrame()
c['list_1'] = list_1
c['list_2'] = list_2

uniques = c.list_2.unique()
for i in uniques:
    print('sum ' + i + ': ' + str(c[c.list_2==i].list_1.sum()))
    print('mean ' + i + ': ' + str(c[c.list_2==i].list_1.mean()))
,

让我们假设您所描述的list1 = [2,142]list2 = ['a','a']。我不知道您要使用的确切约束是什么,但是除了初始设置之外,让我使用两个字典。

  1. list2中获取唯一的密钥,并计算密钥的数量。

让我们定义一个空字典cnt_dic来计算键的数量。完成键计数后,创建零值字典res_dic的副本。

cnt_dic = {}

for key in list2:
    if key not in cnt_dic: 
        cnt_dic[key] = 1
    else:
        cnt_dic[key] += 1

res_dic = cnt_dic.copy()
for key in res_dic.keys():
    res_dic[key] = 0
  1. 使用收集的键对整数求和。
for num,key in zip(list1,list2):
    res_dic[key] += num
  1. 计算平均值。
for key in cnt_dic.keys():
    res_dic[key] /= cnt_dic[key]

然后res_dic将包含{'a': 55.0,'b': 376.5}

本文链接:https://www.f2er.com/3140621.html

大家都在问