当前位置: 首页 > 知识库问答 >
问题:

在循环内追加数据帧

薄涵衍
2023-03-14

我试图通过循环元素,然后通过分页单击来获得链接列表。我不确定如何在熊猫数据帧中的每个循环经过下面显示的分页后追加,这样我就可以在循环之外调用数据帧来列出所有的链接。

它总是覆盖并打印出最后一行。

while True:

    links = [link.get_attribute('href') for link in driver.find_elements_by_class_name('view-detail-link')]

    for link in links:

        df_links = pd.DataFrame([[link]], columns=['link'])

    try:

        NextPage = driver.find_element_by_xpath('//a[@class="ui-pagination-next ui-goto-page"]')
        driver.execute_script("arguments[0].click();", NextPage)

        time.sleep(3)

    except NoSuchElementException:
        break

print(df_links.link[0])

共有1个答案

杜轩昂
2023-03-14

您需要在循环之外创建数据帧。然后,每次在循环中创建新数据帧时,都会将其附加到主数据帧:

df = pd.DataFrame()

while True:

    links = [link.get_attribute('href') for link in driver.find_elements_by_class_name('view-detail-link')]

    for link in links:

        df_links = pd.DataFrame([[link]], columns=['link'])
        df = df.append(df_links)

    try:

        NextPage = driver.find_element_by_xpath('//a[@class="ui-pagination-next ui-goto-page"]')
        driver.execute_script("arguments[0].click();", NextPage)

        time.sleep(3)

    except NoSuchElementException:
        break

print(df.link[0])
 类似资料:
  • 我有一个两个项目的列表,每个项目是一个文本字符串。我想围绕这两个项目循环,如果一个单词不在一组单词中,则基本上删除它。但是,下面的代码将所有单词放在一起,而不是创建两个单独的项。我希望我的更新列表包含两个项目,每个原始项目对应一个im更新:

  • 我试图将多个数据帧附加到一个空数据帧中,但它不起作用。为此,我使用本教程我的代码如下所示: 我在循环中生成一个框架,我的代码是: 我如何才能做到这一点使用熊猫和什么是最好的可能的方式做到这一点。 注意:这里这一行 正在从API中获取一些数据

  • 问题内容: 我有以下for循环: 这样创建的每个数据框都具有与其他列相同的大多数列,但不是全部。而且,它们都只有一行。我需要的是将for循环产生的每个数据帧的所有不同列和每一行添加到数据帧中 我尝试了串联或类似的大熊猫,但似乎没有任何效果。任何想法?谢谢。 问题答案: 假设您的数据如下所示: 然后可以将其替换为 换句话说,不要为每一行形成一个新的DataFrame。相反,请收集字典列表中的所有数据

  • 我是这里的一个新的python用户。我一直在写一个代码,使用selenium和beautiful soup去一个网站,得到html表,并把它变成一个数据帧。 state_list=[] df=pd.dataframe() 对于状态中的状态:driver=webdriver.chrome(executable_path='c://webdrivers/chromedriver.exe')driver

  • 在“数据管理”页面,上方的“追加数据”按钮进入该功能 。 1.该功能会将“源表”里的数据全部复制到“目标表”中 2.两张表的数据类型必须一致。 3.两张表对应列名次序必须完全相同。

  • 我正在尝试做以下练习: 任务四 创建一个空列表购买金额用用户输入的项目价格填充列表继续添加到列表中,直到输入“完成” 可以在正确时使用:带中断 打印购买金额 以下是我目前掌握的代码: 但它给了我一个非常奇怪的输出,如下所示: 输入价格:2222222 输入价格:1 输入价格: 2 输入价格:3 输入价格:完成 输入价格:完成 ['2222222','2','完成'] 有人知道为什么它会覆盖第二、第