Предположим, у нас есть фрейм данных df измерения nxn с двумя разными уровнями индекса, одинаковыми для строк и столбцов. Мне нужно выборочно умножить некоторые элементы df на основе соответствия между индексом строк и индексом столбцов.
вот пример, чтобы прояснить вопрос:
df = pd.DataFrame(np.ones((5,5)), index=[['A','A','B','B','C'], [1,2,1,2,1]], columns=[['A','A','B','B','C'], [1,2,1,2,1]])
сейчас Я хочу умножить элементы в df следующим образом:
, если индекс и столбцы идентичны, умножить относительные элементы на 1 (например, A1 и A1);
, если внешний индекс равен внешнему столбцу, но внутренний индекс отличается от внутреннего столбца, умножьте относительные элементы на 2 (например, A1 и A2);
если внешний индекс отличается от внешнего столбца, но внутренний индекс равен внутреннему столбцу, умножьте относительные элементы на 3 (например, B1 и A1);
, если внешний индекс отличается от внешнего столбца, а внутренний индекс отличается от внутреннего столбца, умножьте относительные элементы на 4 (например, А2 и С1);
ожидаемый результат должен быть кадром данных, содержащим народ задолженные элементы:
A A B B C
1 2 1 2 1
A 1 1 2 3 4 3
A 2 2 1 4 3 4
B 1 3 4 1 2 3
B 2 4 3 2 1 4
C 1 3 4 3 4 1