-2

I have a dataframe that looks like:

user   letter   time
user1    a       2
user2    b       5
user1    b       3
user1    a       5

I try to get a dataframe like this, where time is summed for the same letter for every user, but can't find the solution for this problem:

user   letter   time
user1    a       7
user2    b       5
user1    b       3
Benjamin Breton
  • 1,176
  • 1
  • 11
  • 36
Jan
  • 121
  • 1
  • 8

2 Answers2

0

Use df.groupby(['user', 'letter'])['time'].sum().

Output:

user   letter
user1  a         7
       b         3
user2  b         5

If you want to keep the original columns, you can pass as_index=False to groupby:

df.groupby(['user', 'letter'], as_index=False)['time'].sum()

Output:

    user letter  time
0  user1      a     7
1  user1      b     3
2  user2      b     5
gmds
  • 17,927
  • 4
  • 26
  • 51
0

Try this groupby:

print(df.groupby(['user', 'letter']).sum())

Output:

              time
user  letter      
user1 a          7
      b          3
user2 b          5

A little nicer one:

print(df.groupby(['user', 'letter'], as_index=False).sum())

Output:

    user letter  time
0  user1      a     7
1  user1      b     3
2  user2      b     5
U12-Forward
  • 65,118
  • 12
  • 70
  • 89