【发布时间】:2020-06-19 20:07:38
【问题描述】:
我正在尝试迭代具有接近一百万个条目的 Pandas 数据框。我正在使用 for 循环来迭代它们。以下面的代码为例
import pandas as pd
import os
from requests_html import HTMLSession
from tqdm import tqdm
import time
df = pd.read_csv(os.getcwd()+'/test-urls.csv')
df = df.drop('Unnamed: 0', axis=1 )
new_df = pd.DataFrame(columns = ['pid', 'orig_url', 'hosted_url'])
refused_df = pd.DataFrame(columns = ['pid', 'refused_url'])
tic = time.time()
for idx, row in df.iterrows():
img_id = row['pid']
url = row['image_url']
#Let's do scrapping
session = HTMLSession()
r = session.get(url)
r.html.render(sleep=1, keep_page=True, scrolldown=1)
count = 0
link_vals = r.html.find('.zoomable')
if len(link_vals) != 0 :
attrs = link_vals[0].attrs
# print(attrs['src'])
embed_link = attrs['src']
else:
while count <=7:
link_vals = r.html.find('.zoomable')
count += 1
else:
print('Link refused connection for 7 tries. Adding URL to Refused URLs Data Frame')
ref_val = [img_id,URL]
len_ref = len(refused_df)
refused_df.loc[len_ref] = ref_val
print('Refused URL added')
continue
print('Got 1 link')
#Append scraped data to new_df
len_df = len(new_df)
append_value = [img_id,url, embed_link]
new_df.loc[len_df] = append_value
我想知道如何使用进度条来直观地表示我已经走了多远。我将不胜感激。如果您需要任何澄清,请告诉我。
【问题讨论】:
-
你想做什么?如果您的索引是有序索引/形状,您可以只打印一个百分比。我同意 Robbwh 的观点,如果你使用 iterrows,你可能做错了。
-
我正在尝试从 URL 中抓取一些数据。我添加了上面的代码。如果您认为我可以进行任何更改,请告诉我
标签: python pandas progress-bar tqdm