/ / Умноження DataFrame з дубльованими значеннями індексу - python, pandas

Помноження DataFrame з дубльованими значеннями індексу - python, pandas

Я намагаюся помножити DataFrame з aСерія, де DataFrame має точно такий же індекс, що і Серія, хоча і з дубльованими значеннями індексу. Бажаний результат полягає в тому, що кожен рядок у DataFrame помножується на відповідне значення в Серії, виходячи з значень індексів.

Помноження серії з дубльованими значеннями індексу ідеально працює:

import pandas as pd
weights = pd.Series([10, 100], [0, 1])
s = pd.Series([1, 2, 3, 4], [0, 0, 1, 1])
s.mul(weights)

даючи очікуваний результат:

0     10
0     20
1    300
1    400

Однак, множивши DataFrame з дубльованими значеннями індексу, виробляється a ValueError: неможливо переіндексувати з дубліката осі:

df = pd.DataFrame({"a": [1, 2, 3, 4], "b": [-1, -2, -3, -4]}, [0, 0, 1, 1])
df.mul(weights, axis=0)
...
ValueError: cannot reindex from a duplicate axis

Як я можу досягти наступного результату?

     a    b
0   10  -10
0   20  -20
1  300 -300
1  400 -400

Редагувати:

Один із варіантів - перевстановити серії ваг першого:

df.mul(weights.reindex(df.index, method="ffill"), axis=0)

Відповіді:

1 для відповіді № 1

Як щодо використання apply метод, щоб ви помножили стовпчик кадру даних на стовпець?

df.apply(lambda col: col.mul(weights))

#     a    b
#0   10  -10
#0   20  -20
#1  300 -300
#1  400 -400