【问题标题】:Merging Dataframes that was obtained via web scraping合并通过网络抓取获得的数据帧
【发布时间】:2016-12-13 03:05:40
【问题描述】:

我有一个从网站上抓取表格的代码,并将其读入 pandas Dataframe。但是,由于网站的设计方式,这是通过for 循环完成的。因此,这些表都用相同的name 标记,即:它们在df 名称下标记

代码

soup = bs4.BeautifulSoup(driver.page_source, "html.parser")
    for thead in soup.select(".data-point-container table thead"):
        tbody = thead.find_next_sibling("tbody")

        table = "<table>%s</table>" % (str(thead) + str(tbody))

        df = pandas.read_html(str(table))[0]

        print(df)
        print('-------------')

结果

     Table1   FY2012   FY2013   FY2014   FY2015   Last 12 Months
0    item1    value1   value2   value3   value4   value5
1    item2    value1   value2   value3   value4   value5
2    item3    value1   value2   value3   value4   value5
3    item4    value1   value2   value3   value4   value5
4    item5    value1   value2   value3   value4   value5
5    item6    value1   value2   value3   value4   value5
-------------

     Table2   FY2012   FY2013   FY2014   FY2015   Last 12 Months
0    item1    value1   value2   value3   value4   value5
1    item2    value1   value2   value3   value4   value5
2    item3    value1   value2   value3   value4   value5
3    item4    value1   value2   value3   value4   value5
-------------

     Table3   FY2012   FY2013   FY2014   FY2015   Last 12 Months
0    item1    value1   value2   value3   value4   value5
1    item2    value1   value2   value3   value4   value5
2    item3    value1   value2   value3   value4   value5
3    item4    value1   value2   value3   value4   value5
4    item5    value1   value2   value3   value4   value5
5    item6    value1   value2   value3   value4   value5
-------------

     Table4   FY2012   FY2013   FY2014   FY2015   Last 12 Months
0    item1    value1   value2   value3   value4   value5
1    item2    value1   value2   value3   value4   value5
2    item3    value1   value2   value3   value4   value5
3    item4    value1   value2   value3   value4   value5
4    item5    value1   value2   value3   value4   value5
5    item6    value1   value2   value3   value4   value5
6    item7    value1   value2   value3   value4   value5
7    item8    value1   value2   value3   value4   value5

我有没有办法将所有数据帧合并/合并成一个数据帧?

【问题讨论】:

  • 再一次,有很多问题可以迎合 DataFrames 的合并。我们想看看您已经尝试过什么,以及是什么让这个问题与本网站上已有的其他问题有显着不同。作为安慰,请尝试查看 Pandas 合并文档。
  • 再次......我在征求意见。作为安慰,感谢您的意见。

标签: python selenium pandas dataframe


【解决方案1】:

如果您只需要合并多个 DataFrame,您可以简单地将它们收集到一个列表中,然后使用 pd.concat 合并它们。

这样的事情应该可以工作:

dataframes = []

for thread in soup.select(...):

    #your scraper logic here

    df = pandas.read_html(...)
    dataframes.append(df)

pd.concat(dataframes)

这有帮助吗?

【讨论】:

    猜你喜欢
    • 2022-11-24
    • 2021-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多