0

I need to group the following data frame (df2) by date index and id, accumulating flag values as a count:

r1 = {'id':'1', 'date':'2020-01-20', 'flag':1}
r2 = {'id':'1', 'date':'2020-01-20', 'flag':1}
r3 = {'id':'1', 'date':'2020-01-20', 'flag':1}
r4 = {'id':'1', 'date':'2020-01-23', 'flag':1}
r5 = {'id':'1', 'date':'2020-01-23', 'flag':1}
r6 = {'id':'1', 'date':'2020-01-22', 'flag':1}
r7 = {'id':'2', 'date':'2019-11-18', 'flag':1}
r8 = {'id':'2', 'date':'2019-11-18', 'flag':1}
r9 = {'id':'2', 'date':'2019-11-21', 'flag':1}
r10 = {'id':'2', 'date':'2019-11-19', 'flag':1}
r11 = {'id':'2', 'date':'2019-11-19', 'flag':1}
r12 = {'id':'2', 'date':'2019-11-19', 'flag':1}
r13 = {'id':'2', 'date':'2019-11-19', 'flag':1}
r14 = {'id':'2', 'date':'2019-11-07', 'flag':1}
df2 = pd.DataFrame([r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13,r14])
df2 = df2.set_index('date')
df2

            id  flag
date        
2020-01-20  1   1
2020-01-20  1   1
2020-01-20  1   1
2020-01-23  1   1
2020-01-23  1   1
2020-01-22  1   1
2019-11-18  2   1
2019-11-18  2   1
2019-11-21  2   1
2019-11-19  2   1
2019-11-19  2   1
2019-11-19  2   1
2019-11-19  2   1
2019-11-07  2   1

How to get this result (df3) where flag is a sum of values with the same date and id:

r1 = {'id':'1', 'date':'2020-01-20', 'flag':3}
r4 = {'id':'1', 'date':'2020-01-23', 'flag':2}
r6 = {'id':'1', 'date':'2020-01-22', 'flag':1}
r7 = {'id':'2', 'date':'2019-11-18', 'flag':2}
r9 = {'id':'2', 'date':'2019-11-21', 'flag':1}
r10 = {'id':'2', 'date':'2019-11-19', 'flag':4}
r14 = {'id':'2', 'date':'2019-11-07', 'flag':1}
df3 = pd.DataFrame([r1,r4,r6,r7,r9,r10,r14])
df3 = df3.set_index('date')
df3

            id  flag
date        
2020-01-20  1   3
2020-01-23  1   2
2020-01-22  1   1
2019-11-18  2   2
2019-11-21  2   1
2019-11-19  2   4
2019-11-07  2   1
dokondr
  • 3,389
  • 12
  • 38
  • 62

0 Answers0