繁体   English   中英

Python Pandas Pivot Table group by match_id

[英]Python Pandas Pivot Table group by match_id

我有这个数据框示例:

在此处输入图片说明

match_id、map_type、server 和 duration_minutes 是匹配的常见变量。 在这个例子中,我们有 5 个不同的匹配项。

profile_id、国家/地区、等级、颜色、球队、文明、获胜是参加此指定比赛的每个玩家的特定变量。

我如何获得具有这种结构的新数据框? match_id、map_type、服务器、duration_minutes、profile_id_player1、country_player1、 rating_player1、color_player1、team_player1、civ_player1、won_player1、profile_id_player2、country_player2、 rating_player2、color_player2、team_player2、civ_player2?

match_id 只有一行,每个玩家的所有特定变量。

编辑:这是@darth baba 几乎完成的解决方案的结果

在此处输入图片说明

先感谢您。

首先 groupby match_id 然后将所有其他列聚合到列表中,然后将这些列表扩展到列,以实现这一点,试试这个:

df = pd.groupby(['match_id', 'map_type', 'server', 'duration_minutes'])['profile_id', 'country', 'rating', 'color', 'team', 'civ', 'won'].agg(list)

df = pd.concat([df[i].apply(pd.Series).set_index(df.index) for i in df.columns], axis=1).reset_index()

# Rename the columns accordingly
df.columns = [ 'match_id', 'map_type', 'server', 'duration_minutes', 'profile_id_player1', 'country_player1', 'rating_player1', 'color_player1', 'team_player1', 'civ_player1', 'won_player1', 'profile_id_player2', 'country_player2', 'rating_player2', 'color_player2', 'team_player2', 'civ_player2', 'won_player2']

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM