У меня есть следующие фреймы данных: eta1.shape = (8004, 29), eta2.shape = (138,)
eta1=
id/uniqueID var0 var1 var2 var3 var4 ... var28
5171/0 10.0 2.8 0.0 5.0 1.0 ... 9.4
5171/1 40.9 2.5 3.4 4.5 1.3 ... 7.7
5171/2 60.7 3.1 5.2 6.6 3.4 ... 1.0
...
5171/57 0.5 1.3 5.1 0.5 0.2 ... 0.4
4567/0 1.5 2.0 1.0 4.5 0.1 ... 0.4
4567/1 4.4 2.0 1.3 6.4 0.1 ... 3.3
4567/2 6.3 3.0 1.5 7.6 1.6 ... 1.6
...
4567/57 0.7 1.4 1.4 0.3 4.2 ... 1.7
...
9584/0 0.3 2.6 0.0 5.2 1.6 ... 9.7
9584/1 0.5 1.2 8.3 3.4 1.3 ... 1.7
9584/2 0.7 3.0 5.6 6.6 3.0 ... 1.0
...
9584/57 0.7 1.3 0.1 0.0 2.0 ... 1.7
eta2=
id var28
5171 67.0
4567 98.9
9584 47.7
...
8707 56.3
В eta2
, у меня есть одно значение для каждого id
. Мне нужно добавить значение для каждого id
в eta2
во все столбцы eta1
с таким же id
, как eta = eta1+eta2
. Так, например, результаты для id=5171
должны быть следующими:
eta.loc[5171] =
id/uniqueID var0 var1 ... var28
5171/0 10.0+67.0 2.8+67.0 ... 9.4+67.0
5171/1 40.9+67.0 2.5+67.0 ... 7.7+67.0
5171/2 60.7+67.0 3.1+67.0 ... 1.0+67.0
...
5171/57 0.5+67.0 1.3+67.0 ... 0.4+67.0
Выполнение суммы с помощью eta = eta1.add(eta2)
дает неверные результаты, поскольку они не имеют одинаковые уровни. Я не могу удалить уровни, они нужны мне для последующих расчетов. Поэтому вместо этого я попытался добавить новый уровень к eta2
и затем сделать сумму, но я получаю эту ошибку:
eta2['uniq_id'] = eta2.groupby('id').cumcount()
eta2 = eta2.set_index(['uniq_id'], append=True)
eta = eta1.add(eta2, level=0)
error: typeError: Join one level between two MultiIndex objects is ambiguous
Как я могу сделать эту сумму?