У меня есть функция f(a, b)
, где a, b
- это pandas.Series
, и она возвращает pandas.Series
c
с одинаковой длиной a
и b
.
Теперь у меня есть две серии A
и B
, которые имеют один и тот же мультииндекс. A, B
состоит из множества маленьких series(a1, a2, a3, a4, a5...), (b1, b2, b3, b4, b5...)
. Учитывая, что я не могу использовать f(A, B)
для прямого вычисления результата. Я хочу использовать groupby, чтобы вычислить результат f(a1, b1), f(a2, b2), f(a3, b3)
и объединить их вместе.
Как мне это сделать?
Пример данных, функции и ожидаемый результат.
(Я знаю, что использование другого метода в пандах могло бы легко справиться с этим образцом, но я только хочу поговорить о методе groupby. Спасибо)
a1 0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
a2 0 1
1 2
2 3
3 4
4 5
5 6
6 7
7 8
8 9
9 10
a3 0 2
1 3
2 4
3 5
4 6
5 7
6 8
7 9
8 10
9 11
b1 0 0.0
1 0.0
2 0.0
3 0.0
4 0.0
5 1.0
6 0.0
7 0.0
8 -1.0
9 0.0
b2 0 0.0
1 1.0
2 0.0
3 0.0
4 0.0
5 0.0
6 0.0
7 0.0
8 -1.0
9 0.0
b3 0 0.0
1 0.0
2 0.0
3 0.0
4 -1.0
5 0.0
6 1.0
7 0.0
8 0.0
9 0.0
c1 0 0.0
1 0.0
2 0.0
3 0.0
4 0.0
5 5.0
6 6.0
7 7.0
8 -8.0
9 -9.0
c2 0 0.0
1 2.0
2 3.0
3 4.0
4 5.0
5 6.0
6 7.0
7 8.0
8 -9.0
9 -10.0
c3 0 0.0
1 0.0
2 0.0
3 0.0
4 -6.0
5 -7.0
6 8.0
7 9.0
8 10.0
9 11.0
def f(a, b):
loc = 0
res = np.zeros(len(a))
for i in range(len(b1)):
if b[i] != 0:
if b[i] != loc:
loc = b[i]
res[i] = a[i] * loc
return res