Как выбрать поле из кадра данных, если достигнуто определенное условие? - PullRequest
2 голосов
/ 18 апреля 2019

У меня есть сценарий, в котором у меня есть некоторые данные в CSV-файле, и я извлек их и храню в фрейме данных.Теперь мне нужно перебрать каждую строку в зависимости от конкретного условия.Если это условие выполнено, мне нужно извлечь одно поле из этой строки.

Например: у меня есть данные, связанные с игроками в крикет, в кадре данных.Теперь я хочу выбрать имя игрока с самым высоким средним значением.

Может кто-нибудь помочь мне с этой проблемой?

print("The best Batsman of the Tournament could possibly be: ",
      dataset['Names'].loc[(dataset['Average'] == max(dataset['Average'])) & (dataset['Innings'] >= 15)])

Ожидаемый результат должен быть у игрока с самым высоким агрегатом, таким как Вират Кохли и т.д ...

Я получаю вывод, но есть некоторые незначительные ошибки, а также следующие: Лучший Бэтсмен Турнира может быть: 2 Virat Kohli Имя: Имена, dtype: object

Здесь я не хочу печататьчто-нибудь после ':' кроме 'Virat kohli'.

Ответы [ 3 ]

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

Если вы уверены, что есть совпадение, вы можете использовать idxmax() после условия в Innings:

print("The best Batsman of the Tournament could possibly be: ",
  df.loc[df.loc[df.Innings>=15,'Average'].idxmax(),'Names'])

Выход

The best Batsman of the Tournament could possibly be:  Virat Kohli
1 голос
/ 18 апреля 2019

Должна быть проблема, если никакое значение не найдено, тогда idxmax возвращает первое значение неправильно, лучше использовать next с iter здесь:

a =  dataset.loc[(dataset['Average'] == dataset['Average'].max()) & 
                 (dataset['Innings'] >= 15), 'Names']
print("The best Batsman of the Tournament could possibly be:
                               {}".format(next(iter(a), 'no match')))
1 голос
/ 18 апреля 2019

Вы близки, но вам нужен правильный синтаксис. Использование:

print("The best Batsman of the Tournament could possibly be: ",
      dataset.loc[(dataset['Average'] == dataset['Average'].max()) & (dataset['Innings'] >= 15), ['Names']].iloc[0])

Вместо max(dataset['Average']) используйте dataset['Average'].max(), потому что это быстрее. Также loc позволяет указать желаемый столбец и, следовательно, ['Names'] и iloc для получения первого элемента

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