python - 熊猫:两列的累积计数
问题描述
winner loser winner_matches loser_matches
Dave Harry 1 1
Jim Dave 1 2
Dave Steve 3 1
我正在尝试根据他们的名字在获胜者或失败者列中的出现来建立一个球员参加了多少场比赛的连续计数(即,Dave
上面有一个3
从他参加每场比赛以来的连续计数)。我是 pandas 的新手,并尝试了一些组合,cumcount
但groupby
我不确定我是否只需要手动循环数据集并自己存储所有名称。
编辑:澄清一下,我需要数据框中的运行总计,如上所示,而不仅仅是稍后打印出来的系列!谢谢
解决方案
首先创建MultiIndex Series
者,DataFrame.stack
然后GroupBy.cumcount
,DataFrame
添加:unstack
add_suffix
print (df)
winner loser
0 Dave Harry
1 Jim Dave
2 Dave Steve
s = df.stack()
#if multiple columns in original df
#s = df[['winner','loser']].stack()
df1 = s.groupby(s).cumcount().add(1).unstack().add_suffix('_matches')
print (df1)
winner_matches loser_matches
0 1 1
1 1 2
2 3 1
最后附加到原始DataFrame
作者join
:
df = df.join(df1)
print (df)
winner loser winner_matches loser_matches
0 Dave Harry 1 1
1 Jim Dave 1 2
2 Dave Steve 3 1