Python:为什么.str.contains()仅返回26行中的4行的结果?

时间:2019-02-20 16:32:27

标签: python python-3.x pandas dataframe

我正在尝试打印第一列(列A)中包含单词树的所有行。

url = "https:www.example.com"
driver = webdriver.Chrome()
driver.get(url)

inputElement = driver.find_element_by_id("txtBusinessName")
inputElement.send_keys("tree")

inputElement.send_keys(Keys.ENTER)

try:
    element = WebDriverWait(driver, 30).until(
        EC.presence_of_element_located((By.ID, "grid_businessList"))
    )
finally:
    html = driver.page_source
    soup = BeautifulSoup(html, "html.parser")
    table = soup.find('table', id="grid_businessList")
    rows = table.findAll("tr")

    columns = [v.text.replace('\xa0',' ') for v in rows[0].find_all('th')]

    df = pd.DataFrame(columns=columns)

    for i in range(1, len(rows)):
        tds = rows[i].find_all('td')

        if len(tds) == 5:
            values = [tds[0].text, tds[1].text, tds[2].text, tds[3].text, tds[4].text, tds[5].text]
        else:
            values = [td.text for td in tds]


            df = df.append(pd.Series(values, index=columns), ignore_index=True)

            biz = df[df['Business Name'].str.contains('tree')]

            print(biz)

但是,即使它存在于更多行中,它也只能在其中4行中找到“树”。

它将打印11次:

空DataFrame

列:[A,B,C,D,E,F]

索引:[]

然后它打印第11、13、17、20行的准确结果。

为什么.str。不在每一行的A列中查找?

1 个答案:

答案 0 :(得分:2)

我在这里找到了答案:how to filter pandas dataframe by string?。我只需要标记包含即可re.IGNORECASE。