gpt4 book ai didi

python - Pandas read_html() 在特定列上返回 'nan'

转载 作者:太空宇宙 更新时间:2023-11-04 01:55:26 25 4
gpt4 key购买 nike

我正在使用 pandas 来抓取网站,但它返回的是一整列 'nan' 值,而不是正确的值。我尝试更改几个 read_html() 参数,例如 flavor、converters 和 na_values,但没有成功。我注意到有问题的列的 html 代码不同之处在于它们的其余部分是 'td class=' 类型,而没有被正确读取的是 'td data-behavior=' 。当我简单地将表格复制/粘贴到 excel 中时,一切都粘贴好了。如果有任何帮助,我将不胜感激。

我尝试更改 read_html() 的一些参数但没有成功。我也尝试过使用 lxml/xpath 获取表格,但也没有成功。

week_data = pd.read_html('https://www.espn.co.uk/nfl/fixtures/_/week/2/seasontype/1',
converters={'time': str})

该列应包含包含比赛时间的字符串。

最佳答案

他们将日期时间嵌入到 data-date 属性中,因此除了使用 selenium 之外,另一种选择是简单地将该属性拉出并使用 beautifulsoup 将其粘贴到 td 元素中。

from bs4 import BeautifulSoup
import requests
import pandas as pd
import dateutil
from datetime import datetime

espn_page = requests.get('https://www.espn.co.uk/nfl/fixtures/_/week/2/seasontype/1')
soup = BeautifulSoup(espn_page.content, 'html.parser')
espn_schedule = soup.find('div', {'class': 'main-content'})
for td in espn_schedule.find_all('td', {'data-behavior': 'date_time'}):
utc = dateutil.parser.parse(td.get('data-date'))
localtime = utc.astimezone(dateutil.tz.gettz())
td.string = localtime.strftime("%I:%M")


df = pd.read_html(str(espn_schedule))
print(df[0].columns)
print(df[0][df[0].columns[2]])

关于python - Pandas read_html() 在特定列上返回 'nan',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56918620/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com