I have following dataset.
game_id h_abbr a_abbr
0001 WSH TOR
0002 ANA TOR
0003 TOR MIN
I want to count how many games each team has played so far. Output should be like this
game_id h_abbr a_abbr ht_game_no at_game_no
0001 WSH TOR 1 1
0002 ANA TOR 1 2
0003 TOR MIN 3 1
Use DataFrame.set_index
with DataFrame.stack
for MultiIndex Series
, then use GroupBy.cumcount
for counter, reshape by Series.unstack
, add rename
and add to original DataFrame by DataFrame.join
:
s = df.set_index('game_id')[['h_abbr','a_abbr']].stack()
d = {'h_abbr':'ht_game_no','a_abbr':'at_game_no'}
df = df.join(s.groupby(s).cumcount().add(1).unstack().rename(columns=d), on='game_id')
print (df)
game_id h_abbr a_abbr ht_game_no at_game_no
0 1 WSH TOR 1 1
1 2 ANA TOR 1 2
2 3 TOR MIN 3 1
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With