groupby分组结果拆分行生成新列遇阻,求助解决方法
解决同场比赛groupby结果合并问题
步骤1:执行分组计数逻辑
先运行你原有的groupby代码得到分组后的计数结果:
grouped_df = df[['home_team_name','away_team_name','match_id','type_name','possession_team_name']].groupby( ['home_team_name','away_team_name','match_id','possession_team_name'] ).agg({'type_name':'count'}).reset_index()
步骤2:标记控球队伍角色
给每行数据添加字段,判断当前控球队伍是主队还是客队:
grouped_df['team_role'] = grouped_df.apply( lambda row: 'home' if row['possession_team_name'] == row['home_team_name'] else 'away', axis=1 )
步骤3:用pivot合并同场记录
通过pivot将主队、客队的计数转成独立列,实现两行合并:
result_df = grouped_df.pivot( index=['home_team_name','away_team_name','match_id'], columns='team_role', values='type_name' ).rename(columns={'home':'home_team_type_name', 'away':'away_team_type_name'}).reset_index()
最终结果示例
处理后的结果结构如下:
| home_team_name | away_team_name | match_id | home_team_type_name | away_team_type_name |
|---|---|---|---|---|
| Angel City | Chicago Red Stars | 3829340 | 632 | 744 |
内容的提问来源于stack exchange,提问作者JayRSP
相关产品推荐
相关产品推荐

