Я нашел способ удаления столбцов на основе указанных заголовков c и т. Д., Но не могу понять, как удалить все пустые столбцы в таблице одновременно.
Я очищаю таблицу, которая имеет 10 столбцов. У восьми из этих столбцов есть заголовки, а у двух, у которых нет заголовков, также нет значений внутри столбцов. Я хочу найти простой способ удалить все столбцы, которые имеют пустой заголовок и пустые значения внутри. Я не могу видеть столбцы, но когда я смотрю на форму информационного кадра, вы видите, что у него есть два дополнительных пустых столбца.
https://www.espncricinfo.com/series/8634/scorecard/1173069/australia-women-vs-south-africa-women-2nd-semi-final-icc-womens-t20-world-cup-2019-20
Это это страница, которую я пытаюсь почистить, используя красивый суп. Не могу поделиться кодом в данный момент, так как у меня нет доступа к моему рабочему компьютеру, но если вы посмотрите на таблицу с data-реагирующим = "294" и заголовками "BOWLING", "O", "M", и др c. Вы можете видеть в коде, который имеет два пустых текста заголовка. Мой panda dataframe выглядит идентично этой таблице, но его форма 5x10, потому что в нем есть два пустых нежелательных столбца. Надеюсь, это поможет, но если нет, я смогу вставить код, когда вернусь к работе, но, по сути, фрейм данных выглядит идентично таблице с столбцом индекса.
import requests
from bs4 import BeautifulSoup
import pandas as pd
def url_scraper(url):
response=requests.get(url)
html=response.text
soup=BeautifulSoup(html,"html.parser")
return soup
def first_inns_bowling_scorecard_scraper(url):
soup=url_scraper(url)
for divs in soup.find_all("div",{"id":"gp-inning-00"}):
for bowling_div in soup.find_all("div",{"class":"scorecard-section bowling"}):
table_headers=bowling_div.find_all("th")
table_rows=bowling_div.find_all("tr")[1:]
headers=[]
for th in table_headers:
headers.append(th.text)
data = []
for tr in table_rows:
td = tr.find_all('td')
row = [tr.text for tr in td]
data.append(row)
df=pd.DataFrame(data, columns=headers)
df.dropna(axis=1, how='all', inplace=True)
return df.shape