【问题标题】:create new dataframe for each tennis player为每个网球运动员创建新的数据框
【发布时间】:2020-09-29 21:01:38
【问题描述】:

我有一个网球运动员结果的数据框:

    match   match_date  score  result  player_name
0   match1  06June      6-2    winner   player1
2   match3  07June      5-6    winner   player1
5   match2  08June      6-4    loser    player1
4   match1  06June      6-2    loser    player2
1   match2  08June      6-4    winner   player3
7   match4  12June      6-7    loser    player3

我需要创建一个数据框,其中每个玩家(以前的结果)在一行中:

    player  pM_0_date   pM_1_date   pM_2_date   pM_0_result pM_1_result pM_2_result pM_0_score  pM__score   pM_2_score
0   player1 06June      07June      08June      won         won         lost        6-2         5-6         6-4
1   player2 06June      NaN         NaN         lost        NaN         NaN         6-2         NaN         NaN
2   player3 08June      12June      NaN         won         lost        NaN         6-4         6-7         NaN

[pM = 上一场比赛]

【问题讨论】:

标签: python pandas dataframe


【解决方案1】:

你可以用这个:

result = df.set_index(['player_name', 'match']).unstack()
print(result.to_string())
            match_date                          score                       result                       
match           match1  match2  match3  match4 match1 match2 match3 match4  match1  match2  match3 match4
player_name                                                                                              
player1         06June  08June  07June     NaN    6-2    6-4    5-6    NaN  winner   loser  winner    NaN
player2         06June     NaN     NaN     NaN    6-2    NaN    NaN    NaN   loser     NaN     NaN    NaN
player3            NaN  08June     NaN  12June    NaN    6-4    NaN    6-7     NaN  winner     NaN  loser

如果您想要准确的输出,您可能需要更改 match 列,使其从每个玩家的匹配 0 开始,如下所示:

df['match'] = 'match' + df.groupby('player_name')['match'].cumcount().astype(str)

result = df.set_index(['player_name', 'match']).unstack()
print(result.to_string())
            match_date                  score                result               
match           match0  match1  match2 match0 match1 match2  match0  match1 match2
player_name                                                                       
player1         06June  07June  08June    6-2    5-6    6-4  winner  winner  loser
player2         06June     NaN     NaN    6-2    NaN    NaN   loser     NaN    NaN
player3         08June  12June     NaN    6-4    6-7    NaN  winner   loser    NaN

【讨论】:

  • 我该怎么做?请帮忙
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-21
  • 2022-08-17
  • 1970-01-01
  • 2019-08-14
  • 1970-01-01
  • 1970-01-01
  • 2017-05-08
相关资源
最近更新 更多