纳闷

在pandas文档中看到,不倡议频繁应用append追加数据,而是应用concat连贯,可能提高效率。

于是想到,这样操作已有DataFrame时可能没别的方法,然而在爬虫中,常常是分批采集到数据,那应该在每个线程中转为DataFrame再最初合并,还是应该先用list追加(extand/append)最初再转为DataFrame?

于是本人测试一下,发现后果list解决比频繁转换DataFrame效率高得多。

所以,爬虫中应该先应用list存储、更新数据,抓取完结后再应用pandas解决。

测试如下

1. 应用pandas间接转为DataFrame,最初再concat合并

t = time.perf_counter()pd1 = pd.concat([pd.DataFrame([[i, i, i, i]], columns=['0', '1', '2', '3']) for i in range(1000)],                ignore_index=True)t = time.perf_counter() - tprint(pd1)print('工作全副实现耗时:', t)

输入:

[1000 rows x 4 columns]工作全副实现耗时: 0.47608409999998

2. 应用list合并,最初应用pandas间接转为DataFrame

t = time.perf_counter()lst = []for i in range(1000):    lst.extend([[i, i, i, i]])pd1 = pd.DataFrame(lst, columns=['0', '1', '2', '3'])t = time.perf_counter() - tprint(pd1)print('工作全副实现耗时:', t)

输入:

[1000 rows x 4 columns]工作全副实现耗时: 0.002777700000024197