Python: как разделить матрицу (dataframe) на вектор (dataframe) - PullRequest
0 голосов
/ 08 ноября 2018

Мне нужно разделить матрицу (мат) на вектор (rowSums)

Моя матрица представляет собой фрейм данных:

mat = pd.DataFrame(
  data=[
    (1,0,0,0),
    (1,1,1,0),
    (0,0,1,0),
    (0,1,0,0),
    (1,0,1,0)],
    columns=['ind_1','ind_2','ind_3','ind_4'],
    index=['ct1','ct2','ct3','ct4','ct5'])

и вектор:

rowSums = mat.sum(axis=1)

rowSums is:

ct1    1
ct2    3
ct3    1
ct4    1
ct5    2
dtype: int64

Мне нужно разделить mat / rowSums, но я не могу найти способ.

Я пытаюсь повторить эту команду из R:

b = (mat / rowSums(mat))

И мне нужно получить следующий результат:

         ind_1     ind_2     ind_3    ind_4
[ct1,] 1.0000000 0.0000000 0.0000000      0
[ct2,] 0.3333333 0.3333333 0.3333333      0
[ct3,] 0.0000000 0.0000000 1.0000000      0
[ct4,] 0.0000000 1.0000000 0.0000000      0
[ct5,] 0.5000000 0.0000000 0.5000000      0

1 Ответ

0 голосов
/ 08 ноября 2018

Вы можете использовать div с axis=0:

>>> mat.div(rowSums, axis=0)
        ind_1     ind_2     ind_3  ind_4
ct1  1.000000  0.000000  0.000000    0.0
ct2  0.333333  0.333333  0.333333    0.0
ct3  0.000000  0.000000  1.000000    0.0
ct4  0.000000  1.000000  0.000000    0.0
ct5  0.500000  0.000000  0.500000    0.0
...