我正在使用Pandas从Web中提取HTML表格。在此结果中 (数据框对象列表) 我希望返回所有单元格值为给定数组元素的数据框。
到目前为止,我正在努力调用仅一个列值,而不是整个Object。
表的语法:* (标题行提取不正确,因此这是实际输出)*
| 无|1个|第二章|三个|
| - ------| - ------| - ------| - ------|
| 日期|姓名|人数|正文|
| 二○二二年九月九日|史密斯·杰森|小行星3290|免费洗车|
| 二○二二年三月十二日|贝蒂·保尔森|二三一|10升汽油|
import pandas as pd
import numpy as np
url = f'https://some_website.com'
df = pd.read_html(url)
arr_Nr = ['3290', '9273']
def correct_number():
for el in df[0][1]:
if (el in arr_Nr):
return True
def get_winner():
for el in df:
if (el in arr_Nr):
return el
print(get_winner())
使用功能
correct_number()
当我尝试访问时,我可以输出存在Winner,但不能输出Details
get_winner()
编辑
到目前为止,我觉得我又近了一步函数read_html()返回一个DataFrame对象列表,在我的例子中,只有一个表,所以通过df = dfs[0]
访问它应该得到正确的DataFrame对象。
但现在当我尝试以下操作时,代码没有按预期工作,没有应用任何Filter,并且完整返回了Table:
df2 = df [文件编号=='3290']打印(df2)
1条答案
按热度按时间oxcyiej71#
好吧我终于明白了
Pandas返回了DataFrame对象的列表,在我的例子中只有一个表,为了访问这个表,我必须先访问它。在我比较值之前,我把它们解析为整数,Pandas似乎把它们提取为字符,所以我的数组不能正确地比较它们。
最后,代码看起来比我之前想的要优雅得多: