В настоящее время я пытаюсь извлечь текстовые данные из определенного столбца во фрейме данных и сохранить его в новом фрейме данных.Используя следующий фрагмент кода, я могу извлечь нужные мне шаблоны, но я не могу понять, как отформатировать его так, как мне нравится.Мой текущий фрейм данных имеет мультииндекс и четыре столбца, как показано ниже.В кадре данных есть от нуля до четырех имен игроков, соответствующих каждому индексу, и я бы хотел, чтобы они все были в одном ряду.В каждом случае, когда есть несколько строк, соответствующих индексу, в первом ряду есть пустая ячейка над именем игрока, которое находится во втором, и я просто хотел бы объединить эти строки и заменить пробелы в первом ряду наимена игроков (если есть) прямо под ними.Есть ли способ, которым я мог бы сделать это?Любая помощь с этим будет принята с благодарностью.
regex_df = play_by_play_df['Play'].str.extractall(r'(\. )(.+?)( scored)|(.+?)( homered)|(.+?)( balked to score)|(.+?)( advanced on a wild pitch to score)|(.+?)( advanced on error to score)')[[1,3,5,7,9]].unstack(level='match').stack(level=0)
Это вывод этой строки кода.
match 0 1 2 3
2 1 Jason Heyward None None None
13 1 Kolten Wong None None None
38 1 Matt Carpenter None None None
91 3 JD Martinez None None None
94 1 NaN Yoenis Cespedes None None
3 Alex Avila NaN None None
127 1 Yoenis Cespedes None None None
Это то, что я хотел бы, чтобы мой фрейм данных выглядел.
Моя конечная цель - извлечь имя каждого игрока, которое было забито в данной игре, и сохранить это имя в новом столбце.Ниже приведены примеры пяти отдельных пьес, которые содержат пять уникальных паттернов, из которых извлекаются имена:
Play
2 Matt Holliday singled to right (Liner). Jason Heyward scored.
91 JD Martinez homered (Fly).
256 Lorenzo Cain advanced on a wild pitch to score.
331 Billy Hamilton balked to score. Joey Votto advanced to 2B.
8378 Nick Hundley advanced on error to score. DJ LeMahieu advanced to 2B on error. Error by Chris Heston.
Я хотел бы добавить четыре дополнительных столбца к этому фрейму данных, каждый из которых содержит имя игрока, котороеЗабил (может быть не более четырех игроков, выигравших в данной игре).Очевидно, будет много пустых ячеек, потому что в одной игре редко участвуют четыре игрока.