sumifs function in python

前端 未结 2 1786
刺人心
刺人心 2021-01-29 09:03

I have a list of lists that looks like:

[[\'chr1\', \'3088\', \'1\', 744, \'L1MCc_dup1\']
[\'chr1\', \'3089\', \'1\', 744, \'L1MCc_dup1\']
[\'chr1\', \'3090\', \         


        
相关标签:
2条回答
  • 2021-01-29 09:42

    Use a dictionary:

    d = {}
    for row in my_list:
        key = row[4]
        value = int(row[2])
        d[key] = d.get(key, 0) + value
    

    After this loop, d will map the key values in the last column to the desired sums.

    You could also use collections.defaultdict instead of a normal dictionary.

    0 讨论(0)
  • 2021-01-29 10:05
    >>> d =[['chr1', '3088', '1', 744, 'L1MCc_dup1'],
    ['chr1', '3089', '1', 744, 'L1MCc_dup1'],
    ['chr1', '3090', '1', 744, 'L1MCc_dup1'],
    ['chr1', '15037', '1', 96, 'MER63B'],
    ['chr1', '15038', '1', 96, 'MER63B'],
    ['chr1', '15039', '1', 96, 'MER63B'],
    ['chr1', '15040', '1', 96, 'MER63B'],
    ['chr1', '19465', '1', 418, 'MLT2B4_dup1'],
    ['chr1', '19466', '1', 418, 'MLT2B4_dup1'],
    ['chr1', '19467', '1', 418, 'MLT2B4_dup1']]
    >>> sum(map(lambda x: x[3], filter(lambda x: x[4] == 'MLT2B4_dup1', d)))
    1254
    

    Sum of all column 4 values (I assume you meant that because it was the only int column), where the last column equals to 'MLT2B4_dup1'. You can change that to any other condition of course.

    0 讨论(0)
提交回复
热议问题