熊猫:从两列累积计数

2024-05-16 22:14:43 发布

您现在位置:Python中文网/ 问答频道 /正文

winner  loser   winner_matches  loser_matches
Dave    Harry   1               1
Jim     Dave    1               2
Dave    Steve   3               1

我试图建立一个运行计数,根据一个球员的名字在胜利者或失败者列中的出现(即,上面的Dave有一个3的运行计数,因为他参加过每一场比赛)。我是熊猫的新手,尝试过cumcount和{}的组合,但我不确定是否需要手动循环数据集并自己存储所有的名称。在

编辑:为了澄清,我需要运行的总数在数据帧如上图所示,而不仅仅是一系列打印出来以后!谢谢


Tags: 数据名字steve计数球员matches新手dave
2条回答

首先用^{}创建MultiIndex Series,然后使用^{}添加^{}

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

^{pr2}$

你需要flatten

 pd.Series(df[['winner','loser']].values.flatten()).value_counts()
 [out]
 Dave     3
 Jim      1
 Harry    1
 Steve    1

相关问题 更多 >