Python: добавление только определенных элементов списка в фрейм данных - PullRequest
0 голосов
/ 17 июня 2020

Используя BeautifulSoup, я пытаюсь очистить некоторые спортивные результаты.

from urllib.request import urlopen as uReq
import bs4
from bs4 import BeautifulSoup as soup
import pandas as pd

my_url = 'http://www.ufcstats.com/fight-details/e9eab0fa03eecd9b'
uClient = uReq(my_url)
page_html = uClient.read()
uClient.close()
page_soup = soup(page_html,'html.parser')

f_details = page_soup.find('div', class_='b-fight-details__content' )
f_details_inside = f_details.findAll('i')
s1 = list()
for item in f_details_inside:
     s1.append(item.text)

 print(s1)

Теперь он у меня в списке, который выглядит примерно так. Мне нужны не все элементы в этом списке, а только те, которые имеют определенные порядковые номера.

['\n\n          Method:\n\n        \n Decision - Unanimous \n', '\n          Method:\n\n        ', ' Decision - Unanimous ', '\n\n          Round:\n        \n        5\n      ', '\n          Round:\n        ', '\n\n          Time:\n        \n        \n        5:00\n\n      ', '\n          Time:\n        ', '\n\n          Time format:\n        \n        5 Rnd (5-5-5-5-5)\n      ', '\n          Time format:\n        ', '\n\n          Referee:\n        \n\n                                Herb Dean\n                            \n', '\n          Referee:\n        ', '\n\n          Details:\n        \n', '\n          Details:\n        ', "\nSal D'amato \n\n            \n            \n            44 - 50.\n          ", '\nDerek Cleary \n\n            \n            \n            44 - 50.\n          ', '\nEric Colon \n\n            \n            \n            45 - 50.\n          ']

Я создал словарь с именами столбцов по моему выбору, которые совпадают с индексами s1, которые я хочу собрать из приведенного выше списка.

col_to_str_dict = {'Method':'0','Decision':'2','Round':'3', 'Time':'5','Timeformat':'7','Referee':'9','Judge1':'13','Judge2':'14','Judge3':'15' }

Я создал пустой фрейм данных где я хочу сохранить информацию из приведенного выше списка.

test_df = pd.DataFrame(columns=['Method', 'Decision', 'Round', 'Time', 'Timeformat', 'Referee', 'Judge1', 'Judge2', 'Judge3'])

Я хотел oop по элементам в словаре, чтобы хранить соответствующие данные в соответствующих столбцах моего фрейма данных, но он не работает .

for key, values in col_to_str_dict.items():
    print(key)
    print(values)
    test_df[key] = s1[int(values)]

Но я не могу присвоить значения фрейму данных. В конце концов, я хочу создать этот набор данных для множества боев ММА.

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