Я повышаю скорость своего сценария и видел следующий ответ: Iterrows Performance Issues. Здесь, ответ говорит, что редко нужно использовать iterrows.Векторизованная альтернатива iterrows
В моем коде я использую iterrows, поскольку он очень прост и интуитивно понятен в использовании, однако также очень очень медленный. Поэтому я хотел бы векторизовать фрагменты кода, который я использую iterrows. Вот два примера, где я не могу найти решение. В обоих примерах значения в столбцах все значения DateTime, которые имеют следующий формат: %Y-%m-%d %H:%M:%S
for index, row in df.iterrows():
df.loc[index, 'Time_Between']= row['Time_Begin'] + timedelta(seconds=row['Some_Integer_Seconds_In_A_Column'])
df.loc[index, 'Time_Required']= row['Time_End'] - timedelta(seconds=SomeIntegerSecondsAsAVariable)
df.loc[index, 'Tota_Time']= ((row['Time_Begin'] - row['Time_First']).total_seconds())/60
for index, row in df.iterrows():
if row['Time_Required'] > row['Time_Between']:
df.loc[index, 'Check']= 0
else:
df.loc[index, 'Check']= 1
Как я могу векторизованную это? Я пытался маскировать и применять, но я ничего не могу сделать. Большую часть времени я получаю: TypeError: Cannot change data-type for object array.
Что-то я не получаю с iterrows ...
большое спасибо! я не знал, что вы можете использовать np.where и pd.timedelta таким образом. Это сэкономит мне 10 минут работы снова :) – Uis234