Трудности с наследством.

Работая с pandas наткнулся на ненужное наследство.

Было две простые таблицы, на одной футболисты и их статистика, на второй статистика команд разбитая на домашние и выездные матчи. Задача: на основе статистики футболиста сделать прогноз на следующий матч(его найдём в статистике команд).

Есть замечательный показать ожидаемых голов - xG. Берём среднее значение xG игрока за последние 5 матчей и перемножаем его на коэффициент. Коэффициент получаем из отношения xG команды игрока и xGA(ожидаемые пропущенные голы) команды следующего соперника. И тут у меня возникает вопрос, а играем дома или на выезде? Вот если бы я брал общие показатели и домашних и выездных матчей, то трудностей бы не возникло. Но я решил у команд данные не из overall_xG и overall_xGA, а Home_xG и Away_xGA, если матч домашний и Away_xG с Home_xGA для выездных игр.

Формула сделала своё дело создал новый столбец xPts и запихал туда значения... И получил наследство! В моём новом столбце хранятся не ожидаемые float64, а объекты pandas.Series. Причём эти объекты имеют атрибут Name, который в одной половине случае Home_xG, а в другой Away_xG. А ещё 13 из 650+ строк попали под исключения и там хранятся либо float ноли, либо те же pandas.Series с пустым значением. И все они наследовали индексы из таблицы команд. Естественно с таким разнообразием никакой сортировки не сделать и нормально не извлечь данные.

Поэтому пришлось делать костыль следующего вида: for _, row in df.iterrows():     id = row['id']     prediction = get_xpts(id, fixture)     if isinstance(prediction, (int, float)):         value = prediction     else:         try:             value = prediction.values[0]         except IndexError:             prediction = 0     df.loc[df['id'] == id, 'xPts'] = value

И лишь после это можно было работать, а всякие .apply, .at и .str которые настойчиво предлагал gpt оказались бесполезны :/

Мораль: костыли мы любим, переписывать старый код, заранее избавляясь от лишнего наследства, мы не любим.

Трудности с наследством.
Работая с pandas наткнулся на ненужное наследство | Сетка — социальная сеть от hh.ru Трудности с наследством.
Работая с pandas наткнулся на ненужное наследство | Сетка — социальная сеть от hh.ru