Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to count string in columns using pandas?

Tags:

python

pandas

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
like image 649
Professor Avatar asked Mar 30 '21 06:03

Professor


1 Answers

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
like image 171
jezrael Avatar answered Oct 13 '22 02:10

jezrael