【发布时间】:2019-09-22 13:11:24
【问题描述】:
我正在尝试设置我的代码以从列表中的每个 url 创建一个数据帧,然后将这些数据帧组合成一个数据帧。
我非常接近完成;但是,就像现在一样,我的代码显示此错误消息cannot concatenate object of type "<class 'list'>"; only pd.Series, pd.DataFrame, and pd.Panel (deprecated) objs are valid
urls = ['url1', 'url2']
appended_data = []
for url in urls:
driver = webdriver.Chrome(r'C:\Users\bobby\OneDrive\Documents\MyPrograms\webdrivers\chromedriver.exe')
driver.implicitly_wait(30)
driver.get(url)
tables = pd.read_html(driver.page_source)
df = tables
appended_data.append(df)
driver.close()
appended_data = pd.concat(appended_data)
appended_data.to_csv(r'C:\Users\bobby\OneDrive\Documents\RecruitingApp\hopefullyit\test.csv')
我需要帮助获取代码以从每个 url 创建一个 df,然后将它们组合并写入 csv。
这是完整的错误信息
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-2-7451d5b1833d> in <module>
11 driver.close()
12
---> 13 appended_data = pd.concat(appended_data)
14 appended_data.to_csv(r'C:\Users\bobby\OneDrive\Documents\RecruitingApp\hopefullyit\test.csv')
~\Anaconda3\lib\site-packages\pandas\core\reshape\concat.py in concat(objs, axis, join, join_axes, ignore_index, keys, levels, names, verify_integrity, sort, copy)
226 keys=keys, levels=levels, names=names,
227 verify_integrity=verify_integrity,
--> 228 copy=copy, sort=sort)
229 return op.get_result()
230
~\Anaconda3\lib\site-packages\pandas\core\reshape\concat.py in __init__(self, objs, axis, join, join_axes, keys, levels, names, ignore_index, verify_integrity, copy, sort)
287 ' only pd.Series, pd.DataFrame, and pd.Panel'
288 ' (deprecated) objs are valid'.format(type(obj)))
--> 289 raise TypeError(msg)
290
291 # consolidate
TypeError: cannot concatenate object of type "<class 'list'>"; only
pd.Series, pd.DataFrame, and pd.Panel (deprecated) objs are valid
【问题讨论】:
-
分别写出来。
-
您确定该网址有数据吗?问题是它没有找到数据。看看它告诉你它就像一个HTML标签
<class 'list'> -
哪一行有问题?始终将完整的错误消息(完整的 Traceback)放在问题中(作为文本,而不是屏幕截图)。还有其他有用的信息。
-
您可以保留所有列表并在最后转换为数据框 -
DataFrame(list)- 无需连接。或者您必须在连接到 DataFrame 之前将新列表转换为 DataFrame -DataFrame(new_data)。 -
如您在错误消息中看到的 - 您必须将
list转换为dataFrame才能连接它。read_htmt提供 HTML 中所有表格的列表,并将其附加到列表appended_data中,这样您就有了二维列表。你可以使用print(appended_data)查看。
标签: python pandas dataframe url web-scraping