【问题标题】:Turn pandas column into another row record将 pandas 列转换为另一行记录
【发布时间】:2021-03-31 17:40:29
【问题描述】:

我目前的 pandas df 的简化形式如下:

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

【问题讨论】:

    标签: python pandas data-manipulation


    【解决方案1】:

    创建两个 DataFrame 副本,在其中以不同方式重命名列。在第二个中,还将“最终分数”的顺序翻转到“-”周围,然后加入结果。这也维护了每一行的原始索引,这样您就可以看到分组的内容。

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-09
      • 2021-07-23
      • 1970-01-01
      • 1970-01-01
      • 2021-06-18
      • 1970-01-01
      • 1970-01-01
      • 2021-11-10
      相关资源
      最近更新 更多