Я хочу создать список из значений в наборе данных на основе определенного условия - PullRequest
0 голосов
/ 18 апреля 2019

Я работаю с набором данных, который содержит информацию о каждой игре March Madness с 1985 года. Я хочу знать, какие команды выиграли все это и сколько раз каждая.

Я замаскировал основной набор данных и создалновый, содержащий только информацию об игре чемпионата.Сейчас я пытаюсь создать цикл, который сравнивает результаты обеих команд, сыгравших в чемпионате, определяет победителя и добавляет эту команду в список.Вот так выглядит набор данных: https://imgur.com/tXhPYSm

tourney = pd.read_csv('ncaa.csv')

champions = tourney.loc[tourney['Region Name'] == "Championship", ['Year','Seed','Score','Team','Team.1','Score.1','Seed.1']]

list_champs = []

for i in champions:
    if champions['Score'] > champions['Score.1']:
        list_champs.append(i['Team'])
    else:
        list_champs.append(i['Team.1'])

Ответы [ 2 ]

0 голосов
/ 18 апреля 2019

Зачем вам нужно пройти через DataFrame?

Базовая фильтрация должна работать хорошо. Примерно так:

champs1 = champions.loc[champions['Score'] > champions['Score.1'], 'Team']
champs2 = champions.loc[champions['Score'] < champions['Score.1'], 'Team.1']

list_champs = list(champs1) + list(champs2)
0 голосов
/ 18 апреля 2019

Минималистское изменение (не самое эффективное), чтобы ваш код работал:

tourney = pd.read_csv('ncaa.csv')

champions = tourney.loc[tourney['Region Name'] == "Championship", ['Year','Seed','Score','Team','Team.1','Score.1','Seed.1']]

list_champs = []

for row in champions.iterrows():
    if row['Score'] > row['Score.1']:
        list_champs.append(row['Team'])
    else:
        list_champs.append(row['Team.1'])

В противном случае вы можете просто сделать:

df.apply(lambda row: row['Team'] if row['Score'] > row['Score.1'] else row['Team.1'], axis=1).values
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...