Как добавить столбец в таблицу с многоуровневым заголовками?
Есть такая примитивная таблица:
import pandas as pd
import numpy as np
mframe = pd.DataFrame(np.random.randn(16).reshape(4,4),
index=[['white','white','red','red'], ['up','down','up','down']],
columns=[['pen','pen','paper','paper'],[1,2,1,2]])
Вот так выглядит:
pen paper
1 2 1 2
white up -1.223503 0.781371 -0.028058 0.676958
down 2.022122 -0.923162 -0.335193 -0.440781
red up 0.579994 -0.214678 -1.050433 1.866868
down 0.341215 -1.261777 -0.618855 0.432704
Как я могу добавить столбец в Pen под номером 3 (например где значения из 2 будут умножены на значения из столбца 1)?
pen paper
1 2 3 1 2
white up -1.223503 0.781371 -0,44 -0.028058 0.676958
down 2.022122 -0.923162 -1,1 -0.440781 -0.440781
red up 0.579994 -0.214678 -0,1197 1.866868 1.866868
down 0.341215 -1.261777 -0.4284 0.432704 0.432704
Ответы (1 шт):
Автор решения: Андрей Самохин
→ Ссылка
Вот разобрался:
mframe['pen',3] = mframe['pen'][1].values*mframe['pen'][2].values
Получается так:
pen paper pen
1 2 1 2 3
white 0.394399 0.672002 -0.408329 -0.523119 0.265037
white -1.461758 -0.596727 0.687208 1.209092 0.872271
red -0.759780 1.299219 0.041327 0.279655 -0.987120
red 0.671234 -2.490533 1.638859 -0.239788 -1.671729
И переставляем местами:
mframe = mframe[[['pen',1], ['pen',2],['pen',3],['paper',1],['paper',2]]]
pen paper
1 2 3 1 2
white 0.394399 0.672002 0.265037 -0.408329 -0.523119
white -1.461758 -0.596727 0.872271 0.687208 1.209092
red -0.759780 1.299219 -0.987120 0.041327 0.279655
red 0.671234 -2.490533 -1.671729 1.638859 -0.239788
Может кому пригодится