Как суммировать каждый столбец в кадре данных? - PullRequest
0 голосов
/ 29 января 2019

У меня есть следующий массив данных матрицы вероятности тематического документа

    0             1         2             3         4       ...             77            78            79            80            81
1  0.0  9.941665e-23  0.001141  6.837607e-04  0.010396      ...       0.000071  6.475626e-10  1.641026e-02  2.494897e-08  2.017094e-02
2  1.0  2.735043e-03  0.004329  1.915713e-20  0.000202      ...       0.005399  1.367521e-02  1.816478e-12  1.641023e-02  1.366020e-10

, где столбец 0 со значениями (0.0, 1.0) представляет индекс для темы 1 и 2 соответственно.Фрейм данных имеет 81 столбец и 2 строки.Я хочу суммировать все столбцы и получить еще один кадр данных.Например, для столбца 1 выходные данные будут суммой (0,002735042735040934 + 1,7996105239810978e-15) и для всех столбцов.Я использовал

col_list = list(df)
df = df[col_list].sum(axis=0)

, но это только печать

1      0.0027350427350409341.7996105239810978e-15
2          0.0054700854694576.284676740939513e-13

, которая не является выводом, который я хочу выводить.Как правильно это сделать?После сортировки каждого значения для всех столбцов в порядке убывания я хочу вывести ранг темы для каждого документа в таком формате.

   id      topic-rank
    1          1, 0
    2          1, 0
    3          0, 1
    4          0, 1
        ...
    80         0, 1
    81         1, 0

Каков подходящий способ сделать это?

1 Ответ

0 голосов
/ 29 января 2019

Проблема в том, что значения являются строками, поэтому сначала нужно преобразовать их в float s:

s = df.astype(float).sum()
print (s)
1     0.002735
2     0.005470
80    0.016410
81    0.020171
dtype: float64

РЕДАКТИРОВАТЬ: Используйте DataFrame.div для деления:

df = df.astype(float)

df1 = df.div(df.sum())
print (df1)
              1             2        80            81
1  1.000000e+00  1.000000e+00  0.998241  4.151430e-10
2  6.579826e-13  1.148917e-10  0.001759  1.000000e+00
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...