Как создать список, который подсчитывает количество игр, сыгранных командой, и сохраняет его в каждой строке в DataFrame - PullRequest
0 голосов
/ 11 января 2019

скажем, у меня есть два столбца, как это:

home_team    away_team
    SWE        DEN
    NOR        GER
    SWE        NOR
    GER        DEN
    GER        SWE

и хотите создать две новые колонки, в которых учитываются игры, в которые играют home_team и away_team, например:

home_team    away_team    games_HomeTeam   games_AwayTeam
    SWE         DEN                  1                1
    NOR         GER                  1                1 
    SWE         NOR                  2                2 
    GER         DEN                  2                2
    GER         FRA                  3                1    

1 Ответ

0 голосов
/ 11 января 2019

Вы можете сделать что-то вроде этого:

flatten = [e for p in zip(df.home_team, df.away_team) for e in p]
counts = pd.DataFrame((pd.Series(flatten).groupby(flatten).cumcount() + 1).values.reshape(-1, 2),
                      columns=['games_HomeTeam', 'games_AwayTeam'])

print(pd.concat([df, counts], axis=1))

выход

   home_team  away_team  games_HomeTeam  games_AwayTeam
0          1          2               1               1
1          3          4               1               1
2          1          3               2               2
3          2          4               2               2
4          1          5               3               1

Сначала сгладьте две колонки, затем группу и cumcount, а затем измените форму. Окончательно согласен с df.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...