Home > Net >  Pandas ---> Need an index for each group element
Pandas ---> Need an index for each group element

Time:07-21

My df:

name date value
A 2009-06-30 some value 1
A 2010-06-30 some value 2
A 2011-06-30 some value 3
B 2019-12-31 some value 4
B 2020-12-31 some value 5
B 2021-12-31 some value 6

I want

name date value position
A 2009-06-30 some value 1 2
A 2010-06-30 some value 2 1
A 2011-06-30 some value 3 0
B 2019-12-31 some value 4 2
B 2020-12-31 some value 5 1
B 2021-12-31 some value 6 0

The final view will look like this (maybe pivot)

name 0 1 2
A some value 3 some value 2 some value 1
B some value 6 some value 5 some value 4

This is a serious problem for me. Please help)

CodePudding user response:

You can try a decending cumcount:

df['position'] = df.groupby('name').cumcount(ascending=False)

Then pivot:

df.pivot('name', 'position', 'value')
  • Related