pandas Python -如果列值是给定数组的元素,则返回数据框对象

jei2mxaa  于 2022-12-21  发布在  Python
关注(0)|答案(1)|浏览(136)

我正在使用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)

oxcyiej7

oxcyiej71#

好吧我终于明白了
Pandas返回了DataFrame对象的列表,在我的例子中只有一个表,为了访问这个表,我必须先访问它。在我比较值之前,我把它们解析为整数,Pandas似乎把它们提取为字符,所以我的数组不能正确地比较它们。
最后,代码看起来比我之前想的要优雅得多:

import pandas as pd
import numpy as np

url = f'https://mywebsite.com/winners-2022'

dfs_list = pd.read_html(url,  header =0, flavor = 'bs4') 
df = dfs_list[0] 

winner_nrs = [3290, 843]

result = df[df.Losnummer.astype(int).isin(winner_nrs)]

相关问题