#python
Вопрос:
Я использую цикл for для итерации по столбцу фрейма данных pandas таким образом:
for i in df['column']:
try:
do_stuff_with_column_data
time.sleep(10)
except:
continue
Как я могу изменить код, чтобы делать что-то с данными для 1000 строк, а затем подождать десять секунд и продолжить после этого?
Комментарии:
1. Использование цикла for для итерации по столбцу обычно гораздо менее эффективно, чем работа со всем столбцом сразу. При необходимости вы можете сначала разбить его на куски по 1000 ячеек. Что вы делаете с данными столбца?
Ответ №1:
Вы можете использовать enumerate
функцию в своем for
цикле-таким образом, вы получите номер индекса текущей итерации и измените код, как показано здесь.
for index, i in enumerate(df['column']):
do_stuff_with_column_data(i)
if index % 1000 == 0:
time.sleep(10)
Ответ №2:
row_processed = 0
for i in df['column']:
try:
do_stuff_with_column_data
row_processed = 1
if row_processed == 1000:
row_processed = 0
time.sleep(10)
except:
continue
Ответ №3:
Вы можете использовать функцию перечисления для перебора элементов, но также и для получения индекса элементов.
import numpy as np
import time
df = np.random.rand(10000)
for i, elm in enumerate(df):
try:
print(elm)
if i == 999:
print('sleeping for 10 seconds')
time.sleep(10)
except:
continue
Ответ №4:
Вы можете отобразить 1000 строк из фрейма данных, а затем также спать 10 секунд, используя приведенный ниже код:-
df1 = df.head(1000)
time.sleep(10)