#python #pandas
#питон #панды
Вопрос:
for index, row in data2.iterrows():
date_selection = (data1['Start Time'] > row['shifted_date']) amp; (data1['Start Time'] <= row['Timestamp'])
relevant_data = data1.loc[date_selection]
data2.loc[index, 'Relevant_Duration_Sum'] = relevant_data['Duration'].sum()
Всем привет,
Я пытаюсь запустить цикл над большим набором данных, как показано выше, и хочу оптимизировать этот цикл. Я пытался преобразовать его в функцию для использования .apply
, однако я действительно застрял в apply
циклах по одному столбцу за раз, а не по одной строке за раз, и я ссылаюсь на несколько столбцов и делаю присваивание в последней строке.
Я действительно застрял на этом, и любые предложения действительно помогли бы.
Спасибо
Ответ №1:
Пожалуйста, попробуйте использовать приведенный ниже код. (Я не смог проверить выходные данные, так как не было доступных данных)
def relevant_duration_sum(_shifted_date, _timestamp):
rel_duration_sum = data1.loc[(data1['Start Time'] > _shifted_date) amp; (data1['Start Time'] <= _timestamp), 'Duration'].sum()
return rel_duration_sum
data2['Relevant_Duration_Sum'] = data1.apply(lambda x: relevant_duration_sum(x['Shifted_date'], x['Timestamp']), axis=1)
Надеюсь, это решит вашу проблему!
Комментарии:
1. Спасибо! Отлично работал и значительно сократил время обработки. Я внес небольшую правку в ваш ответ, чтобы исправить ссылку на df.