#python #pandas #function #for-loop #indexing
#python #pandas #функция #for-цикл #индексирование
Вопрос:
В настоящее время я работаю над своим собственным проектом и пытаюсь создать новый столбец, основанный на условии оператора if, в котором я пытаюсь вернуть индексированный элемент из столбца. У меня возникают проблемы с индексацией всех строк, а затем с получением нужного мне конкретного индекса.
Обзор:
Имя набора данных = fivb_2019
«Результат» — это столбец объектов и итоговый счет волейбольного матча. Я пытаюсь использовать индексированный элемент этого столбца для создания нового столбца, например(set_one_points)
примеры значений строк
строки 5-7 в dataframe содержат значение ниже
0-2 (10-21, 16-21)
Я пытаюсь получить индексированное значение [5: 7] для команды хозяев и [8: 10] для команды гостей
for i in fivb_2019['Result']:
print (i[5:7])
Когда я запускаю этот цикл for, я могу выдавать все результаты, которые я хочу для своего столбца, но когда я помещаю этот цикл for в свою функцию, я возвращаю только значение 10 для домашней команды с индексом [5: 7] и значение 21 с индексом [8: 10]. Вот функция:
def fill_set_one (Result, teamid,home_teamid):
for i in fivb_2019['Result']:
if home_teamid == teamid:
return (i[5:7])
else:
return (i[8:10])
fivb_2019['set_one_points'] = fivb_2019.apply(lambda x: fill_set_one(x['Result'],
x['teamid'], x['home_teamid']),axis=1)
Функция выполняется, но результаты из value_counts моего нового столбца [set_one_points] возвращают только эти значения:
fivb_2019['set_one_points'].value_counts()
’10’ 111319 раз
’21’ 111236 раз
Я думаю, что когда я пытаюсь выполнить индексацию внутри функции i ([5: 7]), это может привести к захвату только столбцов с пятого по седьмой и строкового индекса ’10’. Потому что в последней строке кода вы можете видеть, что в строке 223765 и других 13 должно быть возвращаемым результатом.
1-2 (13-21, 21-14, 11-15)
Другие примеры строк
2-1 (16-21, 21-18, 22-20)
2-1 (18-21, 23-21, 16-14)
2-0 (21-19, 21-19)
Просто не понимаю, почему я не могу вернуть все результаты внутри функции для создания моего нового столбца.
Заранее спасибо за помощь, я ценю это.
Кайл
Комментарии:
1. Я в замешательстве. Мое предположение, которое может быть совершенно неверным, заключается в том, что вы должны установить
axis=0
. Но, опять же, это дикое предположение.2. Спасибо за попытку, Тимус! Но когда я запускаю лямбда-выражение, ось должна быть равна 1, чтобы распознать столбцы