从API获取数据并为每个y求和2个值

2024-04-18 23:35:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从API获取数据,其结构如下所示: 地区-通过-性别-年份-价值 这个api显示有多少人从国家通过考试,但它有2行为同一年,但性别是不同的(男性和女性)。 我想对每年的价值求和,例如:

CountryA通过男性2019 12

CountryA通过女性2019 30

所以结果应该是42。 不幸的是,我的方法只返回女性的值。你知道吗

我试着这样做:

def task2(self,data,district=None):
    passed = {stat.year: stat.amount for stat in data
              if self.getPercentageAmountOfPassed(stat.status,stat.district,stat.year)}


def getPercentageAmountOfPassed(self,status,district,year):
    return status == 'passed' and district == 'CountryA' and year <= 2019

我很确定我是从api得到数据的,因为我正在用其他参数解决其他的例子

数据示例: [年度][成绩][金额][通过][性别]

[数据(2010.0,波尔斯卡,160988.0,普兹斯特•皮奥,米奇尼)

数据(2010.0,波尔斯卡,205635.0,普日斯特•皮奥,科比蒂)

数据(2011.0,波尔斯卡,150984.0,普日斯特•皮奥,米奇尼)]


Tags: 数据selfapidatadefstatusyearstat
1条回答
网友
1楼 · 发布于 2024-04-18 23:35:31

发生这种情况的原因是,当您有相同的年份时,您会覆盖以前的条目。您需要将它们相加:

from collections import defaultdict

def sum_per_year(data):
    passed = defaultdict(int)
    for stat in data:
        if getPercentageAmountOfPassed(stat.status, stat.district, stat.year):
            passed[int(stat.year)] += stat.amount
    return passed

相关问题 更多 >