我有以下数据集。
game_id h_abbr a_abbr
0001 WSH TOR
0002 ANA TOR
0003 TOR MIN
我想计算到目前为止每支球队打了多少场比赛。输出应该是这样的
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
答案 0 :(得分:4)
使用DataFrame.set_index
和DataFrame.stack
作为MultiIndex Series
,然后使用GroupBy.cumcount
作为计数器,通过Series.unstack
重塑,添加rename
并添加到原始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