刮擦3张桌子,并使用beautifulsoup熊猫将其转换为可用的df

时间:2019-03-17 22:18:25

标签: python pandas list dataframe beautifulsoup

我正在尝试抓取一个具有三个表的网站,并将其转换为我可以用于分析的df或csv。这是我所拥有的代码以及我在几个步骤中遇到的问题。 (警告:python的新手)

import pandas as pd

dfs = pd.read_html('https://www.happyhourspanish.com/learning-efficiently-start-with-the-250-most-common-spanish-words/',header=0)
for df in dfs:
    print(df) #loops all 3 tables

此代码将包含250个单词的所有3个表下载到三列-排名,西班牙语,英语。当我尝试保存所有3个表时,错误提示我无法将列表对象保存到csv中。

dfs.to_csv("Spanish_Key2.csv", index=False)

AttributeError: 'list' object has no attribute 'to_csv'

当我仅保存一个df时,它仅将3个表中的第三个保存到了csv中。

df.to_csv("Spanish_Key.csv", index=False)

当我尝试简单地使用'dfs'时,它以列表格式显示了三个漂亮的表。这里的问题-我如何从列表中将此表格格式转换为包含所有3个表格的数据框?

dfs

当我尝试'dfs [0]'时,它只会将第一个表放入可行的数据帧中。我如何使其他两个变成这种格式?

dfs[0]

当我尝试以下代码时,所有3个表现在都在一个单元格中,因此数据帧只有3个单元格。

import pandas as pd
spanish = pd.DataFrame(dfs)
spanish

任何有关如何将所有三个表合并为一个数据帧或将所有3个表合并为csv并在单独的单元格中包含所有250个单词的任何建议,将不胜感激。

如果解决方案是操纵excel,那么关于如何将所有单词分成不同单元格的任何建议?谢谢!

1 个答案:

答案 0 :(得分:1)

You want pd.concat(dfs), which concatenates the three dataframes together row-wise.