У меня есть фрейм данных, в котором хранятся ключи в виде идентификатора и некоторые числовые значения в Val1/Val2:
ID Val1 Val2
id0 10 20
id0 11 19
id1 5 5
id1 1 1
id1 2 4
Я хотел бы просмотреть этот кадр данных и объединить строки попарно, получая средние значения Val1/Val2 для строк с одинаковым идентификатором. Суффикс должен быть добавлен к идентификатору новой строки в зависимости от того, какая это пара чисел.
Вот результирующий кадр данных:
ID Val1 Val2
id0_1 10.5 19.5
id1_1 3 3
id1_2 1.5 2.5
В этом примере осталось только 3 строки. (id0, 10, 20) усредняется с (id0,11,19) и объединяется в одну строку.
(id1,5,5) усредняется с (id1,1,1,) и (id1,1,1) усредняется с (id1,2,4) для формирования 2 оставшихся строк.
Я могу придумать итеративный подход к этому, но это будет очень медленно. Как я мог сделать это правильным способом pythonic/pandas?
Код:
df = pd.DataFrame(columns=['ID', 'Val1', 'Val2'], data=[['id0', 10, 20], ['id0', 11, 19], ['id1', 5, 5], ['id1', 1, 1], ['id1', 2, 4]])
Вы хотите получить среднее значение для следующей строки в группе по идентификатору?
можешь объяснить логику, если нет пары?
@Umar.H всегда найдется хотя бы пара
@ifly6 нет, он должен работать со старыми данными, которые были там раньше. так что не принимайте среднее значение против того, что уже усреднено