如何从df中的列嵌套列表中计算频率?

2024-04-27 02:43:17 发布

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

我想计算嵌套列表中项目的出现次数。基金目前的结构;每条记录按匹配id和占有id分组,然后将第二个值、动作名称、球员名称传递给名为动作顺序的列表

我可以计算每个控球范围内的事件总数,没有问题,但我现在希望能够计算球员A参与事件的次数?在中国,哪些事件发生得更频繁

#sample df
pass_goal = pd.DataFrame({'match_id': [1107073,1107073,1107073,1409630,1409630], 
'possession_number': [2,2,2,40,40], 'second': [10,15,20,250,260], 
'action_name': ['pass', 'pass', 'goal','pass','goal'], 
'player_name': ['a','b','c','a','b']})

#grouping by match and possession then adding a list
posses = pass_goal.groupby(['match_id','possession_number'])[['second', 'action_name','player_name']].apply(lambda action: action.values.tolist()).reset_index(name='action_seq') 

优先输出

Player A B C
Pass   2 1 0
Goal   0 1 1

Tags: name名称idnumber列表match事件action
1条回答
网友
1楼 · 发布于 2024-04-27 02:43:17

你可以尝试:

(pass_goal[["action_name","player_name"]]
 .pivot_table(columns="player_name", index="action_name", aggfunc=len, fill_value=0)
 .rename_axis(index="", columns="player"))

player       a  b  c

goal         0  1  1
pass         2  1  0

相关问题 更多 >