python - csv.writer 比 to_csv 快得多吗?
问题描述
我一直在编写一些抓取脚本,尝试各种方式将提取的数据导出到 csv。我发现 csv.writer 比 to_csv 快得多,我实际上是在计时,但速度很快。不幸的是,我使用 csv.writer 的输出不是我想要的。
这是函数 to_csv 的输出:
to_csv 输出符合我的预期,但导出 9000 行数据需要几个小时。所以我尝试使用 csv.writer,它比 to_csv 函数更快,但不幸的是,输出不是我所期望的。
这是我的脚本:
def writerows(rows, filename):
with open(filename,'a',encoding='UTF8',newline='') as toWrite:
writer = csv.writer(toWrite)
writer.writerow(header)
writer.writerows([rows])
start = datetime.datetime.now()
count = 0
allin = []
for html in results:
count+=1
soup =bs(html,'html.parser')
try :
all = soup.find('td',class_='FootNote').text
except :
all = np.nan
name = pd.read_html(html, match='Name')[0].set_index([0, pd.read_html(html, match='Name')[0].groupby(0).cumcount()])[1].unstack(0)
comname = pd.read_html(html, match='Company Name')[0].set_index([0, pd.read_html(html, match='Company Name')[0].groupby(0).cumcount()])[1].unstack(0)
try :
adm = pd.read_html(html, match='Admission Sponsor', index_col=0)[0].T
except :
adm = pd.DataFrame({'Admission Sponsor':np.nan,'Sponsor':np.nan},index=[0])
df = name.join(comname).join(adm)
df['remark']= all
allin.append(df)
finaldf = pd.concat(allin, ignore_index=True)
# finaldf.to_csv('testing01.csv', index=0) >>>> to_csv function
# writerows(finaldf, 'testing.csv') >>>> csv.writer function
print(count,'|', end=' ')
finish = datetime.datetime.now() - start
print("Time Taken:",finish)
我期待输出与 to_csv 函数的输出相同。我很确定我的脚本由于无法达到与 to_csv 函数相同的结果而缺少某些东西。非常感谢您的指导和解释。
解决方案
推荐阅读
- c++ - 编译器会优化构造函数调用吗
- c++ - 如何将此 C++ 代码转换为 C 代码?
- owl - 语义网和本体论书籍?
- javascript - React.js、Express.js 和可怕的 CORS
- python - Plotly:用新数据覆盖图表的数据
- dialogflow-es - 带有 Dialogflow 的操作链接在操作控制台中返回空白意图
- reactjs - 添加定时器功能后画布消失
- django - Elastic Beanstalk 上的 Docker + Django
- sql-server - SQL Server 动态重置运行平衡
- python - 无法使用 openpyxl 覆盖现有的 Excel 工作表