У меня есть два кадра данных панд, как это:
category time day 1 2 3
a 24 1 15 35 20
a 22 1 40 35 15
category day time total
b 1 19 10
b 1 20 10
b 1 21 10
b 1 22 10
b 1 23 10
b 1 24 10
b 2 1 10
a 1 0 10
a 1 1 10
a 1 2 10
a 1 3 10
a 1 4 10
a 1 5 10
a 1 6 10
a 1 7 10
a 1 8 10
a 1 9 10
a 1 10 10
a 1 11 10
a 1 12 10
a 1 13 10
a 1 14 10
a 1 15 10
a 1 16 10
a 1 17 10
a 1 18 10
a 1 19 10
a 1 20 10
a 1 21 10
a 1 22 10
a 1 23 10
a 1 24 10
a 2 1 10
Я хотел бы добавить элемент в столбце '2' в первом кадре данных к соответствующему элементу во втором кадре данных, элемент в столбце '1 'должен быть добавлен к ячейке выше, а тот, что в столбце' 3 '- к ячейке любимой
Отображение этого результата:
category day time total
b 1 19 10
b 1 20 10
b 1 21 10
b 1 22 10
b 1 23 10
b 1 24 10
b 2 1 10
a 1 0 10
a 1 1 10
a 1 2 10
a 1 3 10
a 1 4 10
a 1 5 10
a 1 6 10
a 1 7 10
a 1 8 10
a 1 9 10
a 1 10 10
a 1 11 10
a 1 12 10
a 1 13 10
a 1 14 10
a 1 15 10
a 1 16 10
a 1 17 10
a 1 18 10
a 1 19 10
a 1 20 10
a 1 21 10 + 40
a 1 22 10 + 35
a 1 23 10 + 15 + 15
a 1 24 10 + 35
a 2 1 10 + 20
Сейчас я использую цикл, но онмедленно, и мне нужно что-то быстрее:
for row in df_1:
date = row[0]
time = row[1]
category = row[2]
total = row[3:]
index = df_2.index[(df_2['date'] == date) & (df_2['time'] == time)].[0] & (df_2['category'] == category)]
df_2['total'].iloc[index - 1 : index + 1 + 1 ] = df_2['total'].iloc[index - 1 : index + 1 + 1] + total
Есть ли хороший способ сделать это с помощью панд?Должен ли я установить индекс моего второго фрейма данных на «день» и «время», чтобы можно было быстро их получить?У меня очень большой набор данных, поэтому для меня важно, чтобы выбранный мной подход был быстрым.