将 pandas 列变成另一行记录

Turn pandas column into another row record

我现在的pandasdf的简化形式如下:

Team1 Team1_Rank Team2 Team2_Rank Final_Score
abc 1234 def 9876 13 - 32

创建以下形式的新 df 的有效方法是什么?

Team Team1_Rank Opp Opp_Rank Final_Score
abc 1234 def 9876 13 - 32
def 9876 abc 1234 32 - 13

创建两个 DataFrame 副本,以不同方式重命名列。在第二个中,也翻转 'Final Score' 围绕 '-' 的顺序,然后加入结果。这也为每一行保留了原始索引,这样您就可以看到分组的内容。

df1 = df.rename(columns={'Team1': 'Team', 'Team1_Rank': 'Team_Rank',
                         'Team2': 'Opp', 'Team2_Rank': 'Opp_Rank'})

df2 = df.rename(columns={'Team1': 'Opp', 'Team1_Rank': 'Opp_Rank',
                         'Team2': 'Team', 'Team2_Rank': 'Team_Rank'})
df2['Final_Score'] = df2['Final_Score'].str.split(' - ').str[::-1].str.join(' - ')

df = pd.concat([df1, df2])

  Team  Team_Rank  Opp  Opp_Rank Final_Score
0  abc       1234  def      9876     13 - 32
0  def       9876  abc      1234     32 - 13