У меня есть первый фрейм данных людей (df_id
), который вводит данные в start_time
и выходит из них в end_time
.
У меня есть другой фрейм данных (df_time
), который дает мне значение переменной x
в каждый момент времени.
Я хочу создать новую переменную в df_id
, которая даст мне для каждого индивидуума среднее значение x
от времени начала и окончания индивидуума.
Я смог сделать это только зацикливаясь на каждом отдельном человеке, что занимает очень много времени. Есть ли более быстрый способ сделать это?
Вот что я попробовал:
import pandas as pd
data_id = {'id':[1, 2, 3], 'start_time':[1, 2, 4], 'end_time':[2, 4, 5]}
df_id = pd.DataFrame(data_id)
data_time = {'time': list(range(1,6)), 'x': [2,2,4,5,3] }
df_time = pd.DataFrame(data_time)
# This works, but is way too slow
for i, row in df_id.iterrows():
start = row['start_time']-1
end = row['end_time']
df_id.at[i,'mean_x'] = ((df_time['x'][start:end])).mean()
Большое спасибо!