Pandas - 将函数应用于每隔一行

Kel*_*per 6 python pandas

我有一个数据框,我想做的基本上就是将获胜队和失败队在同一位置的得分制成表格。我尝试过添加 lambda 函数,但没有成功。我当前拥有的数据框是第一个,我想以第二个问题的形式创建一个数据集。谢谢。

在此输入图像描述

一个

GameId      Team    Home    Score
1           Spirit  1       81
1           Rockers 0       66
2           Lightning   1   73
2           Flames  0       82


Game ID Home Team   Away Team   Home Score  Away Score
1       Spirit      Rockers     81          66
2       Lightning   Flames      73          82
Run Code Online (Sandbox Code Playgroud)

Xu *_*shi 4

尝试这个:

输入:

import pandas as pd

raw_df = pd.DataFrame({"GameId": [1, 1, 2, 2],
                       "Team": ["Spirit", "Rockets", "Lighting", "Flames"],
                       "Home": [1, 0, 1, 0],
                       "Score": [81, 66, 73, 82]})
print(raw_df)
Run Code Online (Sandbox Code Playgroud)

输出:

   GameId      Team  Home  Score
0       1    Spirit     1     81
1       1   Rockets     0     66
2       2  Lighting     1     73
3       2    Flames     0     82
Run Code Online (Sandbox Code Playgroud)

输入:

raw_df.loc[:, "Home"] = raw_df.Home.map({
        1: "Home",
        0: "Away"
    })

result = raw_df.pivot_table(index=["GameId"],
                            columns=["Home"],
                            values=["Team", "Score"],
                            aggfunc={"Team": lambda team: " ".join(team.tolist()),
                                     "Score": lambda score: score})

result = result.sort_index(axis="columns", level=[0, "Home"], ascending=False)
result.columns = [' '.join(reversed(col)) for col in result.columns]
print(result)
Run Code Online (Sandbox Code Playgroud)

输出:

       Home Team Away Team  Home Score  Away Score
GameId                                            
1         Spirit   Rockets          81          66
2       Lighting    Flames          73          82
Run Code Online (Sandbox Code Playgroud)