как распечатать все значения под столбцом в таблице википедии? - PullRequest
1 голос
/ 21 июня 2020

Я собираю данные о COVID-19 из таблицы википедии в pandas фрейм данных. когда я печатаю столбец случаев в таблице википедии, я ожидал, что все значения в столбце «случаи» будут напечатаны, но только последнее значение в столбце было напечатано во фрейме данных. это мой код ниже. Я хочу напечатать все значения в столбце «дела». пожалуйста, как я могу это сделать?

import requests
from bs4 import BeautifulSoup
import pandas as pd
html= requests.get("https://en.wikipedia.org/wiki/COVID-19_pandemic_in_Nigeria")
bsObj= BeautifulSoup(html.content, 'html.parser')

for items in bsObj.find("table",{"class":"wikitable sortable"}).find_all('tr')[1:37]:
    data = items.find_all(['th',{"align":"left"},'td'])
    #print(data)
    state = data[0].a.text
    #print(state)
    cases = data[1].b.text
    #print(cases)

table= ({"STATES": [state],
       "CASES":[cases]})
tab= pd.DataFrame(table)
print(tab)

Результат

    STATES   CASES
0   Kogi       3

1 Ответ

1 голос
/ 21 июня 2020

Ваш l oop перезаписывает целевые значения на каждой итерации, поэтому вы получаете только последнюю строку. Вам нужно сохранить эти значения в списке и ЗАТЕМ преобразовать их в фрейм данных.

Так что измените свой l oop на:

states = []
cases = []
for items in bsObj.find("table",{"class":"wikitable sortable"}).find_all('tr')[1:37]:
    data = items.find_all(['th',{"align":"left"},'td'])
    states.append(data[0].a.text)
    cases.append( data[1].b.text)
columns = ['States','Cases']
tab = pd.DataFrame(list(zip(states, cases)), 
               columns =columns) 
tab 

Вывод:

    States  Cases
0   Lagos   8,177
1   FCT     1,489
2   Kano    1,182

эт c.

...