简体   繁体   中英

Sum of values based on list of values in python

I was trying to do a code and got stucked in here.Having a data frame as below:

data = {'Name1':['A', 'B', 'C', 'D','E','F','G','H'],'Name2':['B','C','D','E','F','G','H','D'],
        'sum':[12,10,5,5, 10,15,10,13]
       }
df = pd.DataFrame(data)
df

Have a list of elements as follows:

my_list=[[A,B],[F,G],[A,B,C],[A,B,C,D,E],[E,F,G]]

Need to find out the sum as follows:

[A,B]->12
[F,G]->15
[A,B,C]->[A,B]+[B,C]->12+10=22
[A,B,C,D,E]->[A,B]+[B,C]+[C,D]+[D,E]->12+10+5+5=32
[E,F,G]->[E,F]+[F,G]->10+15=25

Craft a Series for easy indexing and use a list comprehension:

my_list=[['A','B'],['F','G'],['A','B','C'],
         ['A','B','C','D','E'],['E','F','G']]

s = df.set_index(['Name1', 'Name2'])['sum']

out = [sum(s.get(x) for x in zip(l, l[1:])) for l in my_list]

output: [12, 15, 22, 32, 25]

intermediate:

[[s.get(x) for x in zip(l, l[1:])] for l in my_list]
# [[12], [15], [12, 10], [12, 10, 5, 5], [10, 15]]

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM